簡體   English   中英

'OutOfMemoryException'讀取20mb XLSX文件

[英]'OutOfMemoryException' reading 20mb XLSX file

我正在使用NPOI處理Excel文件。 這是我讀取文件的方式:

using (FileStream stream = File.OpenRead(excelFilePath))
{
    IWorkbook wb = WorkbookFactory.Create(stream);
    ...
}

但是,對於任何大於幾兆字節的XLSX文件,它都會導致內存使用量飆升至大約1GB,並最終引發OOM異常。

經過一些研究,我發現奇怪的是,從文件而不是從流加載工作簿可以減少POI的內存消耗。 以下是與我使用文件提供的Java示例最接近的C#:

OPCPackage pkg = OPCPackage.Open(new FileInfo(excelFilePath));
XSSFWorkbook wb = new XSSFWorkbook(pkg);

但是它似乎使用了相同的基礎實現,因為內存使用率仍然相同並且會導致OutOfMemory異常。

NPOI是否有內置處理大XLSX文件的內容?

也歡迎提出關於可同時處理XLS和XLSX文件的替代庫的建議。

似乎XLSX支持在NPOI中是相當新的,它根本無法處理大文件。

在嘗試了一些庫之后, EPPlus能夠毫不費力地處理大型XLSX文件,因此我最終決定擁有兩個用於讀取Excel文件的庫,其中NPOI用於XLS,EPPlus用於XLSX。

作為替代庫的建議, Apache POI是一個很好的庫。 我已經將它廣泛用於XLSX和XLS文件,並且效果很好。 這是對文件進行快速測試的要點

Apache POI唯一無法涵蓋的格式是可以使用Xelem代替的舊格式XML文件。

暫無
暫無

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

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