c# - 导出数据时出现 OutOfMemoryException
问题描述
我正在尝试构建一个将数据导出为 xlsx 格式的导出功能。我已经完成了 csv 并且它运行良好,但是我在导出大于 60,000 条记录的数据时遇到了问题。任何人都可以帮助解决这个难题吗?
uint sheetId = 1;
if (sheets.Elements<DocumentFormat.OpenXml.Spreadsheet.Sheet>().Count() > 0)
{
sheetId =
sheets.Elements<DocumentFormat.OpenXml.Spreadsheet.Sheet>().Select(s => s.SheetId.Value).Max() + 1;
}
DocumentFormat.OpenXml.Spreadsheet.Sheet sheet = new DocumentFormat.OpenXml.Spreadsheet.Sheet() { Id = relationshipId, SheetId = sheetId, Name = table.TableName };
sheets.Append(sheet);
DocumentFormat.OpenXml.Spreadsheet.Row headerRow = new DocumentFormat.OpenXml.Spreadsheet.Row();
int iCol = 1;
List<String> columns = new List<string>();
foreach (System.Data.DataColumn column in table.Columns)
{
columns.Add(column.ColumnName);
DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell();
cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String;
cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(column.ColumnName);
cell.CellReference = ExcelColumnLetter(iCol).ToString().Trim() + "1";
headerRow.AppendChild(cell);
iCol++;
}
sheetData.AppendChild(headerRow);
int iRow = 2;
foreach (System.Data.DataRow dsrow in table.Rows)
{
iCol = 1;
DocumentFormat.OpenXml.Spreadsheet.Row newRow = new DocumentFormat.OpenXml.Spreadsheet.Row();
foreach (String col in columns)
{
DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell();
cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String;
cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(dsrow[col].ToString()); //
cell.CellReference = ExcelColumnLetter(iCol).ToString().Trim() + iRow.ToString().Trim();
newRow.AppendChild(cell);
iCol++;
}
sheetData.AppendChild(newRow);
iRow++;
}
workbook.Close();
解决方案
推荐阅读
- terraform - 访问嵌套的 terraform 输出值
- html - 为什么我的子菜单在 html css 中不起作用
- reactjs - 使用自定义 Axios 和 redux-saga 处理错误
- r - 从 R 中的链接列表下载 PDF 时出错
- twitter-bootstrap - 将 bootstrap/scss/mixins 加载到 Vue scss 组件中
- javascript - RequireJS 优化文件返回未定义
- c# - 等待用户点击多个控件中的一个控件
- javascript - REST API 新用户未发布到 MongoDB
- visual-studio-code - 安装扩展时VSCode扩展依赖安装
- javascript - 如何在 React.js 组件中执行脚本?