Openxmlsdk处理100万个大数据错误和内存溢出

问题描述

 private DataTable ReadExcel(string sheetName,Stream stream)
        {
            using (SpreadsheetDocument document = SpreadsheetDocument.Open(stream,false))
            {//打开Stream
                IEnumerable<Sheet> sheets = document.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == sheetName);
                if (sheets.Count() == 0)
                {//找出合适前提的sheet,没有则返回
                    return null;
                }

                WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(sheets.First().Id);
                //获取Excel中共享数据
                SharedStringTable stringTable = document.WorkbookPart.SharedStringTablePart.SharedStringTable;
                IEnumerable<Row> rows = worksheetPart.Worksheet.Descendants<Row>();//获得Excel中得数据行
                DataTable dt = new DataTable("Excel");
                //因为须要将数据导入到DataTable中,所以我们假定Excel的第一行是列名,从第二行开端是行数据
                foreach (Row row in rows)
                {
                    if (row.RowIndex == 1)
                    {//Excel第一行动列名
                        GetDataColumn(row,stringTable,ref dt);
                    }
                    else
                        GetDaTarow(row,ref dt);//Excel第二行同时为DataTable的第一行数据
                }
                return dt;
            }
        }

我需要将Excel中的数据转换为日期表。 Excel中大约有100万〜200万条数据。代码运行不正确,system.outofmemoryexception异常,该怎么办,或者我需要将数据写入磁盘是一个更好的解决方

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)