若依ruoyi框架POI导出时设置某列或某个单元格不可编辑的功能集成,POI如何设置某列或某个单元格不可编辑,纯原创

文章介绍了在若依框架中如何通过自定义注解和修改ExcelUtil类,实现导出Excel时特定列或单元格不可编辑的功能。主要步骤包括设置单元格锁定状态、设置保护状态和密码,以及处理POI库中的单元格锁定问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在开发的过程中遇到了批量修改的操作,不过是通过导出的数据在excel修改后在导入进来,来完成修改的效果,这样的话就需要在导出的数据中传入唯一字段用于作为数据标识,比如设备的SN号,以及一些其他的展示字段,但这些字段用户是不可以去修改的,如何限制用户去修改这些字段成为了我们这篇文章的内容。
由于若依框架中excel的导入导出使用的是POI,所以如果使用原生框架遇到问题的也可以参考这篇文章。

思路

1.将需要锁定的单元格为锁定状态;
2.不需要锁定的设置为解锁状态;
3.单元格填充完毕后设置sheet表格为受保护状态并设置密码。
因为POI不支持直接对单元格设置锁定,所以需要设置保护状态,再对单元格的锁定状态做操作,如果不设置保护状态单元格还是可以编辑的。

期间遇到的问题

将单元格设置为不可编辑状态后,整个表都不可以编辑;
因为单元格默认的状态就是锁定状态,需要将不需要锁定的单元格进行解锁。

若依框架导出时如何让某列或某个单元格不可编辑的功能集成

1.首先在若依的自定义注解类Excel中加入isLock注解参数

/**
 * @Description: 该列是否被锁定,被锁定的列不可编辑 TODO 2023/5/26 新增让单元格列不可编辑逻辑
 * @Param: []
 * @return: boolean
 * @Author: TangBoBoa
 * @Date: 2023/5/26
 */
public boolean isLock() default false;

2.在ExcelUtil中修改exportExcelcreateCelladdCell方法:

新增的代码用startend做了标识

/**
 * 对list数据源将其里面的数据导入到excel表单
 * 
 * @return 结果
 */
public void exportExcel(HttpServletResponse response)
{
   
   
    try
    {
   
   
        writeSheet();
        // 设置单元格为保护状态 TODO 2023/5/26 新增让单元格列不可编辑逻辑——————————————————start
        sheet.protectSheet("password");
        // 设置单元格为保护状态 TODO 2023/5/26 新增让单元格列不可编辑逻辑——————————————————end
        wb.write(response.getOutputStream());
    }
    catch (Exception e)
    {
   
   
        log.error("导出Excel异常{}", e.getMessage());
    }
    finally
    {
   
   
        IOUtils.closeQuietly(wb);
    }
}

/**
 * 创建单元格
 */
public Cell createCell(Excel attr, Row row, int column)
{
   
   
    // 创建列
    Cell cell = row.createCell
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值