C# NPOI 读取Excel20万条数据(.xlsx)会提示内存溢出

时间:2022-09-20 23:28:38
 DataTable dt = new DataTable();
            ISheet sheet= null;            
            using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read))
            {
                if (strFileName.IndexOf(".xlsx") != -1 )
                {
                    XSSFWorkbook xssfworkbook = new XSSFWorkbook(file);
                    sheet = xssfworkbook.GetSheetAt(0);
                }
                else
                {
                    HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
                    sheet = hssfworkbook.GetSheetAt(0);
                }
            }

将文件填充到 XSSFWorkbook就会catch 内存溢出

5 个解决方案

#1


既然都说内存溢出了...加内存被 弄个128G内存先试试 看看可以不.

#2


目前是16G内存  Excel  10M 没有其他办法么?

#3


那就分sheet,分别读取。

#4


引用 3 楼 sjbcl2008 的回复:
那就分sheet,分别读取。


XSSFWorkbook xssfworkbook = new XSSFWorkbook(file);

他是在这一步提示 内存溢出,用户提供一个多sheet文件,并且要将所有sheet进行导入

列数超过300列,每个sheet数据量在6万条左右

#5


请问你这个问题解决了吗?

#1


既然都说内存溢出了...加内存被 弄个128G内存先试试 看看可以不.

#2


目前是16G内存  Excel  10M 没有其他办法么?

#3


那就分sheet,分别读取。

#4


引用 3 楼 sjbcl2008 的回复:
那就分sheet,分别读取。


XSSFWorkbook xssfworkbook = new XSSFWorkbook(file);

他是在这一步提示 内存溢出,用户提供一个多sheet文件,并且要将所有sheet进行导入

列数超过300列,每个sheet数据量在6万条左右

#5


请问你这个问题解决了吗?