使用 Apache POI 删除 Excel 中的多行
Deleting multiple rows in Excel using Apache POI
我有一个 Excel sheet,table 有 75 行。
在第 76 行,我有每列 =SUM(A1:A75)
和 =SUM(B1:B75)
的总计函数
在第 77 到 92 行中,我有一个 Excel 图表,它采用 A1:A75 和 B1:B75 作为值
如果我使用 Apache POI 来填充所有 75 行,那么一切看起来都很棒。
(我正在使用 XSSFWorkbook)
如果我使用 Apache POI 只填充 30 行,那么我想删除第 31 到 75 行。这是我 运行 遇到问题的地方。
如果我删除 Excel 中的这些行,那么总计函数会更新,Excel 图表会更新为使用 A1:A30 和 B1:B30,并且 Excel 图表移至第 31 行。
我想使用 Apache POI 反映此行为
这是我试过的
xlsTable.shiftRows(75,91,-45)
(第 75 到 91 行是 Excel 第 76 到 92 行的 Apache 行等效项,包括总计函数和图表)
我也试过了
for (int i = 75; i > 30; i--) {
Row r = CellUtil.getRow(i, xlsTable);
xlsTable.removeRow(r);
}
和
for (int i = 30; i < 75; i) {
Row r = CellUtil.getRow(i, xlsTable);
xlsTable.removeRow(r);
}
这些只会导致我的 sheet 因 #REF 错误而变得一团糟。我想我想要的可能无法通过 POI 实现,而且我需要实际构建整个 sheet 以获得所需的行数,然后添加图表。不过我想我会问!
到目前为止,我找到的最佳解决方案是简单地隐藏行。这样,大部分问题都解决了。
- Excel 图表向上移动
- Excel图表事实上只使用那些未隐藏的行(它忽略隐藏的行,所以这些隐藏的行不会产生大量"empty spaces" 在图表中)
- 总函数有效
更准确地说,还可以为列分配命名范围,然后将图表设置为使用这些命名范围,然后使用代码更新命名范围。但是隐藏行仍然是必要的。
我有一个 Excel sheet,table 有 75 行。
在第 76 行,我有每列 =SUM(A1:A75)
和 =SUM(B1:B75)
的总计函数
在第 77 到 92 行中,我有一个 Excel 图表,它采用 A1:A75 和 B1:B75 作为值
如果我使用 Apache POI 来填充所有 75 行,那么一切看起来都很棒。 (我正在使用 XSSFWorkbook)
如果我使用 Apache POI 只填充 30 行,那么我想删除第 31 到 75 行。这是我 运行 遇到问题的地方。
如果我删除 Excel 中的这些行,那么总计函数会更新,Excel 图表会更新为使用 A1:A30 和 B1:B30,并且 Excel 图表移至第 31 行。
我想使用 Apache POI 反映此行为
这是我试过的
xlsTable.shiftRows(75,91,-45)
(第 75 到 91 行是 Excel 第 76 到 92 行的 Apache 行等效项,包括总计函数和图表)
我也试过了
for (int i = 75; i > 30; i--) {
Row r = CellUtil.getRow(i, xlsTable);
xlsTable.removeRow(r);
}
和
for (int i = 30; i < 75; i) {
Row r = CellUtil.getRow(i, xlsTable);
xlsTable.removeRow(r);
}
这些只会导致我的 sheet 因 #REF 错误而变得一团糟。我想我想要的可能无法通过 POI 实现,而且我需要实际构建整个 sheet 以获得所需的行数,然后添加图表。不过我想我会问!
到目前为止,我找到的最佳解决方案是简单地隐藏行。这样,大部分问题都解决了。
- Excel 图表向上移动
- Excel图表事实上只使用那些未隐藏的行(它忽略隐藏的行,所以这些隐藏的行不会产生大量"empty spaces" 在图表中)
- 总函数有效
更准确地说,还可以为列分配命名范围,然后将图表设置为使用这些命名范围,然后使用代码更新命名范围。但是隐藏行仍然是必要的。