OpenXML Sax 方法快速将 100K+ 行导出到 Excel

excelXML

1个回答

写回答

春橘

2025-12-10 02:32

+ 关注

XML
XML

使用OpenXML Sax方法可以快速将包含100K+行数据的文件导出到excel。OpenXML是一种用于处理Office文档的开放式标准,它提供了一组API和工具,可以让我们直接操作Office文档的内部结构,而无需依赖于安装Office软件。

在导出大量数据到excel时,使用OpenXML Sax方法可以提高性能和效率。相比于传统的基于DOM的方法,Sax方法是一种基于事件的处理方式,它逐行读取数据并将其写入excel文件,因此在处理大量数据时更加高效。

下面是一个示例代码,演示了如何使用OpenXML Sax方法将100K+行数据导出到excel文件:

csharp

using (SpreadsheetDocument document = SpreadsheetDocument.Create("output.xlsx", SpreadsheetDocumentType.Workbook))

{

WorkbookPart workbookPart = document.AddWorkbookPart();

workbookPart.Workbook = new Workbook();

WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();

worksheetPart.Worksheet = new Worksheet(new SheetData());

Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" };

sheets.Append(sheet);

SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();

for (int i = 1; i <= 100000; i++)</p> {

Row row = new Row();

Cell cell1 = new Cell();

CellValue cellValue1 = new CellValue(i.ToString());

cell1.Append(cellValue1);

row.Append(cell1);

sheetData.Append(row);

}

workbookPart.Workbook.Save();

document.Close();

}

在上面的示例中,我们首先创建了一个SpreadsheetDocument对象,并指定了输出的文件名和类型。然后,我们创建了一个WorkbookPart对象和一个WorksheetPart对象,并将它们添加到SpreadsheetDocument中。

接下来,我们创建了一个SheetData对象,用于存储数据行。然后,使用循环生成了100K+行数据,并将每行数据写入SheetData中。

最后,我们保存了WorkbookSpreadsheetDocument对象,并关闭了文档。

使用OpenXML Sax方法可以快速高效地将大量数据导出到excel,这在处理需要大量计算和分析的数据时非常有用。通过使用OpenXML Sax方法,我们可以避免加载整个excel文件到内存中,从而节省了内存和处理时间。

示例代码如下:

csharp

using (SpreadsheetDocument document = SpreadsheetDocument.Create("output.xlsx", SpreadsheetDocumentType.Workbook))

{

// 创建WorkbookPart和WorksheetPart

WorkbookPart workbookPart = document.AddWorkbookPart();

workbookPart.Workbook = new Workbook();

WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();

worksheetPart.Worksheet = new Worksheet(new SheetData());

// 创建Sheets和Sheet

Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" };

sheets.Append(sheet);

SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();

// 生成数据行

for (int i = 1; i <= 100000; i++)</p> {

Row row = new Row();

Cell cell1 = new Cell();

CellValue cellValue1 = new CellValue(i.ToString());

cell1.Append(cellValue1);

row.Append(cell1);

sheetData.Append(row);

}

// 保存文档

workbookPart.Workbook.Save();

document.Close();

}

使用OpenXML Sax方法可以快速高效地导出大量数据到excel,这在处理需要大量计算和分析的数据时非常有用。通过逐行读取和写入的方式,我们可以避免加载整个excel文件到内存中,从而节省了内存和处理时间。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号