我正在使用workbook.removeSheetAt()从工作簿中删除某个命名工作表。但是,工作簿在将其写入磁盘后包含一个名为“Sheet3”的新工作表。是什么赋予了?我不是在我的代码中的任何地方创建这个新工作表。注意:我正在使用XSSFWorkbook和所有其他XSSF内容。
更多信息:这是输出xlsx中workbook.xml的一个片段。我正在删除index = 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>
答案 0 :(得分:2)
Apache POI正在使用基于索引的工作表(有点像数组)。如果纸张位于大于x的位置,则即使位于空白处,也必须在位置x处存在纸张。您可以尝试移动工作表n> x使用setSheetOrder
定位n - 1似乎有类似于此的错误报告:Bug Report
如何隐藏工作表:setSheetHidden