新增行有限制,必须停留在可编辑的单元格才能新增行

新增行需要停留在可编辑的单元格才能新增行,否则会提示:此单元格或图表受到保护。要进行更改,您必须先取消保护工作表

image.png (14.6 KB)

@feng.qun.zhu.avaryholding.com

解决思路
出现 “此单元格或图表受到保护” 提示,是因为工作表已被 保护【1】。在 Aspose.Cells(Java)中,只有先 取消工作表保护,才能通过代码插入行、列或修改单元格内容【2】【4】。


1. 取消工作表保护

// 加载工作簿
Workbook wb = new Workbook("input.xlsx");

// 获取需要操作的工作表(假设是第1张)
Worksheet ws = wb.getWorksheets().get(0);

// 取消保护
//   - 空密码情况:直接调用无参方法
//   - 有密码情况:传入密码,否则会抛出异常
try {
    ws.unprotect();                 // 空密码
    // ws.unprotect("yourPassword"); // 有密码时使用
} catch (Exception e) {
    // 处理密码错误等异常
    e.printStackTrace();
}

Worksheet.unprotect() 用于解除工作表保护;无参版本适用于空密码的情况,带密码的重载需要提供正确的密码【2】【4】。


2. 插入新行

// 在第 5 行(索引从 0 开始)插入 1 行
int insertRowIndex = 4;   // 第 5 行
int rowsToInsert   = 1;
ws.getCells().insertRows(insertRowIndex, rowsToInsert);

3. (可选)重新保护工作表

ws.protect(ProtectionType.ALL);   // 或 ws.protect("yourPassword");

4. 保存工作簿

wb.save("output.xlsx");

小结

  1. 根本原因:工作表被保护,导致只能在可编辑单元格上操作【1】。
  2. 解决办法:在代码中先调用 Worksheet.unprotect()(或 unprotect(password))解除保护,然后使用 Cells.insertRows(或 insertColumns)等 API 添加行【2】【4】。
  3. 注意:如果工作表使用了密码保护,必须提供正确的密码;否则 unprotect 会抛出异常【2】。
  4. 其他限制:如果使用 Aspose.Cells.GridDesktop,运行时不支持解除保护,需要在 Excel 中手动取消保护后重新保存文件【3】。

按照上述步骤即可在 Aspose.Cells for Java 中实现 不受 “必须停留在可编辑单元格” 限制的行插入。如有进一步问题,欢迎在本贴继续交流。

@feng.qun.zhu.avaryholding.com,

这是默认且预期的行为。请取消保护工作表以完成任务。