C#读取Excel文件时,如果Excel文件的记录数比较多,可能导致OutOfMemoryException异常。
查了一下资料在这里找到了解决办法:
http://poi.apache.org/components/spreadsheet/quick-guide.html#FileInputStream
Files vs InputStreams
When opening a workbook, either a .xls HSSFWorkbook, or a .xlsx XSSFWorkbook, the Workbook can be loaded from either a File or an InputStream. Using a File object allows for lower memory consumption, while an InputStream requires more memory as it has to buffer the whole file.
If using WorkbookFactory, it's very easy to use one or the other:
// Use a file
Workbook wb = WorkbookFactory.create(new File("MyExcel.xls"));
// Use an InputStream, needs more memory
Workbook wb = WorkbookFactory.create(new FileInputStream("MyExcel.xlsx"));
从上面的注释可以看出,用FileInputStream方式打开,使用内存比较多,用File方式打开,使用内存较少。
按上面的办法,问题果然得到解决。在此记录一下,希望对各位有所帮助。
当使用C#读取Excel文件时,如果记录数过多,可能会抛出OutOfMemoryException异常。Apache POI提供的WorkbookFactory提供了解决方案。通过使用File而不是InputStream来创建Workbook,可以显著降低内存消耗。例如,可以使用`WorkbookFactory.create(new File(MyExcel.xls))`代替`WorkbookFactory.create(new FileInputStream(MyExcel.xlsx))`,这样能有效防止内存溢出问题。实践证明,这个方法能够成功解决大量数据读取时的内存问题。
1320

被折叠的 条评论
为什么被折叠?



