美文网首页
Poi实现保护工作表后可新增与删除行

Poi实现保护工作表后可新增与删除行

作者: XJ2017 | 来源:发表于2020-03-17 01:30 被阅读0次

背景

最近项目需要实现数据的导出,并支持导入数据实现新增或更新数据

需求

  • 隐藏列:因为需要更新数据,导出的excel需要保存记录ID。但又不希望用户看到
  • 锁定ID数据:考虑到用户直接复制行导致隐藏列被复制,从而将新增的数据变成更新数据,将隐藏的列放在第一行并锁定则不能复制
  • 删与增行:由于导入的数据存在合并行,用户编辑时会用到删除与新增行

实现

  • 遇到的问题:由于excel被设置为保护模式后,除填充数据时可设置单元格为lock或unlock,默认都是lock的单元格,这将导致无法删除行
  • 实现思路:通过wps新建一个sheet并使用Ctrl+A统一将单元格设置为unlock,最后使用java代码加载并填充单元格(根据要求设置lock或unlock样式)

思路主要来源(多谢博主分享)

https://blog.csdn.net/qq286210662/article/details/50085137

具体代码

注意:需要填充数据的单元格,如果无需lock一定要设置对应的样式

// 第一步,通过加载template.xlsx创建一个HSSFWorkbook
        XSSFWorkbook wb;
        try {
            InputStream is = ExcelUtil.class.getClassLoader().getResourceAsStream("template.xlsx");
            wb = new XSSFWorkbook(is);
        } catch (IOException e) {
            throw new SystemException("找不到项目中的模板excel", e);
        }

        // 第二步,在workbook中编辑template的sheet
        wb.setSheetName(0, sheetName);
        XSSFSheet sheet = wb.getSheetAt(0);
        sheet.createFreezePane(0, 1, 0, 1);
        sheet.protectSheet("123456");

        CTSheetProtection sheetProtection = sheet.getCTWorksheet().getSheetProtection();
        sheetProtection.setSelectLockedCells(true);
        sheetProtection.setSelectUnlockedCells(false);
        sheetProtection.setFormatCells(false);
        sheetProtection.setFormatColumns(false);
        sheetProtection.setFormatRows(false);
        sheetProtection.setInsertRows(false);
        sheetProtection.setDeleteRows(false);
        sheetProtection.setSort(false);
        sheetProtection.setAutoFilter(false);

相关文章

  • Poi实现保护工作表后可新增与删除行

    背景 最近项目需要实现数据的导出,并支持导入数据实现新增或更新数据 需求 隐藏列:因为需要更新数据,导出的exce...

  • 保护excel表格

    1、保护工作表不被删除或插入 审阅 - 保护工作簿 - 输入保护密码,别人就无法对你的工作表做删除、添加或隐藏操作...

  • mysql 常用语句一览表

    操作表数据,增删改查 查询 新增 更新 删除 更快的删除 如果想从表中删除所有行,不要使用DELETE。可使用TR...

  • 学习1

    1.保护工作簿:不能增加或者删除新的工作表(审阅)2.保护工作表:可以选择设置某一特定的工作表用户可以进行的操作(...

  • GreenDao数据库升级解决方案

    主要思路: 删除表不改动 新增表:创建新表 增加新字段:在原有表上直接新增字段 修改或删除原有字段:数据迁移

  • mysql 语句语法

    数据表的新增修改删除 存储过程 删除存储过程 店员表 订单表

  • Linux命令之Sed

    以行为单位的新增/删除 删除 新增 a->目标行后面添加,i ->目标行前面添加 以行为单位的替换与显示 c p ...

  • Python基础11

    第七章高级数据类型 7.1列表 7.1.1列表及其基本属性 列表的特点:可新增,可删除,可重复,包含类型可以不同。...

  • SQL基础语句

    SQL 基本语句记录 新建表 删除表: 插入数据: 删除数据: 更新数据: 新增字段: 删除字段: 修改字段: 重...

  • HBase JavaAPI

    添加依赖 判断表是否存在 旧API 新API 创建表 删除表 新增和修改 查询数据 删除数据

网友评论

      本文标题:Poi实现保护工作表后可新增与删除行

      本文链接:https://www.haomeiwen.com/subject/fkyaehtx.html