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方式打开,使用内存较少。
按上面的办法,问题果然得到解决。在此记录一下,希望对各位有所帮助。