簡體   English   中英

POI XSSFWorkbook 克隆/復制/復制

[英]POI XSSFWorkbook cloning/copy/duplicating

我想使用 OPCPackage 和 XSSFWorkbook 在 POI 中打開一個 excel 文件。 由於此文件將在不同線程中使用,因此我想避免重新打開文件以節省時間(POI 打開 xlsx 文件很慢)。 所以我所做的是將工作簿保存在一個全局變量中,然后線程將只訪問這個全局變量並重用該對象。

我遇到的問題是當我嘗試重用對象時,它會影響/修改excel文件的原始數據。

我試圖通過克隆或序列化從全局變量復制工作簿,但我在兩個進程中都遇到了錯誤。

有沒有辦法從現有的 XSSFWorkbook 對象創建一個新副本並且使用這個新副本不會影響原始文件的數據?

這是我打開excel文件的代碼:

OPCPackage pkg = OPCPackage.open(new File("c:/sample.xlsx"));
XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create(pkg);

我想創建“wb”對象的新副本並將其保存在另一個變量中。

我有一個類似的練習,我的解決方案是使用 WorkbookFactory 類的 Create 方法,將源文件中的 InputStream 對象傳遞給它。 是下一個:

InputStream inputStream = new FileInputStream (origin_file)
XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create (inputStream)
XSSFSheet sheet = wb.getSheet (sheet)
...
FileOutputStream file = new FileOutputStream ("new_file.xlsx")
wb.write (file)
file.close ()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM