2011-09-21 173 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

相關問題