[英]Improvement of reading and writing an Excel file[POI,Java]
是否有可能使用POI庫和Java改進對Excel文件的讀寫? 現在,我的代碼如下所示:
//Reading a file
FileInputStream fin = new FileInputStream(new File(localizationOfExcelFile));
Workbook workbook = new XSSFWorkbook(fin);
//Writing to a file
FileOutputStream fout = new FileOutputStream(new File(localizationOfExcelFile));
workbook.write(fout);
fout.close();
在此先多謝!
如果要寫入高延遲系統(例如網絡硬盤驅動器),則應使用BufferedOutputStream緩沖輸出。 通過在Windows上對網絡硬盤驅動器的緩沖寫入,我將寫入時間縮短了一個數量級,而在將我的寫入緩沖到本地硬盤驅動器時,損失卻微不足道。 性能可能會因硬盤寫入緩存,操作系統和延遲而異,因此如果其他人將使用您的應用程序,則不要僅針對您的設置進行優化。
如果有幫助,請使用BufferedInputStream緩沖輸入,盡管我的測試沒有改善。 正如@Gagravarr建議的那樣,嘗試使用File(而不是FileInputStream)打開工作簿。
如果您不知道要打開Excel 97-2003還是Excel 2007+文件(不要基於文件擴展名猜測;更不用說基於文件前幾個字節的猜測了),請使用WorkbookFactory.create ,盡管您將需要使用FileInputStream來避免在關閉工作簿時(即使不保存)修改工作簿的錯誤 。
這是很好的做法,關閉流( fin
!)當你與他們所做的。 不確定將Streams保持打開狀態是否會影響內存,系統文件句柄資源或垃圾回收,但可能會有所幫助。 主要是可讀性:您要清楚地說明您已經完成了Stream對象。
最后,盡可能隱藏實施細節,甚至在本地也是如此。 盡可能在FileOutputStream fout = ...
使用OutputStream fout = new FileOutputStream(...)
。 Java非常冗長:類型聲明定義了變量遵守的協定。 實例化選擇將實現該合同的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.