2011-09-21 175 views
1

我正在使用workbook.removeSheetAt()从工作簿中删除特定的工作表。但是,工作簿在将其写入磁盘后包含一个名为“Sheet3”的新工作表。是什么赋予了?我没有在我的代码中的任何地方创建这个新工作表。注意:我正在使用XSSFWorkbook和所有其他XSSF内容。使用Apache Poi从excel工作簿中删除工作表后,工作表仍然存在?

一些更多信息:这里是输出xlsx中的workbook.xml片段。我正在删除索引= 2,表面sheetId = 3的工作表。我开始的模板工作簿只有四张。

<sheets> 
    <sheet r:id="rId1" sheetId="1" name="Sheet1"/> 
    <sheet r:id="rId2" sheetId="2" name="Params" state="hidden"/> 
    <sheet r:id="rId4" sheetId="4" name="Warnings" state="hidden"/> 
    <sheet r:id="rId3" sheetId="5" name="Sheet3"/> 
</sheets> 
+1

记住,你不能有没有工作簿的工作簿... –

回答

2

Apache POI使用基于索引的工作表(有点像数组)。如果在大于x的位置上有一张纸张,则即使该位置为空白,也必须在位置x上存在一张纸张。你可以尝试移动表,其中n> x到位置n - 1采用setSheetOrder

好像有一个类似的错误报告:Bug Report

什么隐藏的工作表:setSheetHidden

+0

这很有用,但即使在我正在移除的工作表是工作簿中的最后一个工作表时,问题仍然存在。 Sheet3似乎是凭空而来,它总是处于最后的位置。 – Jake

相关问题