2015-04-01 223 views
2

我有一个包含75行的表格的Excel工作表。 在第76行我有各列=SUM(A1:A75)=SUM(B1:B75) 在第77到第92位的行我有一个Excel图表这需要A1的总功能:A75和B1:B75为值 Picture of Data and Total and Chart使用Apache POI在Excel中删除多行

如果我使用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排Apache的行当量76至92和包括总功能和图表)

我也曾尝试

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); 
} 

这只是因为我的表变得凌乱与#REF错误。我想象我所需要的POI不可能实现,而且我需要实际构建必要数量的行的整个工作表,然后添加图表。但我想我会问!

+0

它是xls还是xlsx? – Jimmy 2015-04-01 15:16:02

+0

XSSFWorkbook - xlsx(我也更新了这个问题) – gordon613 2015-04-01 15:19:05

+0

你需要将其中的两个组合起来。在此代码中根据需要播放索引:'HSSFRow rowToRemove = sheet.getRow(currentRowIndex); \t \t \t sheet.shiftRows(currentRowIndex + 1,lastRowIndex,-1); \t \t \t sheet.removeRow(rowToRemove);' – Jimmy 2015-04-01 15:22:13

回答

0

迄今为止发现的最佳解决方案是简单地隐藏行。这样,大部分问题都解决了。

  1. Excel图表上移
  2. Excel图表事实上只使用它们没有隐藏的(它忽略隐藏行这些行,所以这些隐藏的行不创建图表中广大“空的空间” )
  3. 的总体功能工作

为了更精确,一个也可以分配命名范围的列,然后设置为使用这些命名区域图表,然后使用代码来更新指定范围。但是隐藏行仍然是必要的。

相关问题