如何将大量数据导出到 excel

本文关键字:excel 数据 | 更新日期: 2023-09-27 18:33:17

我目前正在使用 EPPlus 将数据导出到 excel。它适用于少量数据,效果令人钦佩。但是它会消耗大量内存才能导出大量数据。

我简要介绍了 OOXML 和/或 Microsoft Open XML SDK 2.5。我不确定是否可以使用它将数据导出到 Excel?

还有第三方提供程序库。

我想知道什么解决方案可以正确地完成以良好的性能导出大量数据并且不占用太多空间(理想情况下小于要导出的数据量的 3 倍(的工作?

更新:一些额外的要求... 我需要能够导出"颜色"信息(不包括CSV(,并且我想要一些易于管理的东西,例如EPPlus库(不包括XML格式本身(。我找到了另一个线程,他们推荐了我正在尝试的Aspose或SpreadsheetGear。我把第一个答案说好。谢谢大家。

更新 2016-02-16 正如信息...我们现在使用SpreadSheetGear,我们喜欢它。我们曾经需要过支持,这太棒了。

谢谢

如何将大量数据导出到 excel

EPPlus 将数据导出到 excel。它适用于少量数据,效果令人钦佩。但是它会消耗大量内存才能导出大量数据。

几年前,我编写了一个 C# 库来使用 OpenXML 库将数据导出到 Excel,我遇到了同样的情况。

它工作正常,直到您开始拥有大约 30k+ 行,此时,库将尝试缓存您的所有数据......而且它会耗尽内存。

但是,我通过使用 OpenXmlWriter 类解决了这个问题。 这会将数据直接写入 Excel 文件(无需先缓存(,并且内存效率更高。

而且,正如你将看到的,该库非常易于使用,只需调用一个CreateExcelDocument函数,并DataSetDataTableList<>传递它:

// Step 1: Create a DataSet, and put some sample data in it
DataSet ds = CreateSampleData();
// Step 2: Create the Excel .xlsx file
try
{
    string excelFilename = "C:''Sample.xlsx";
    CreateExcelFile.CreateExcelDocument(ds, excelFilename);
}
catch (Exception ex)
{ 
    MessageBox.Show("Couldn't create Excel file.'r'nException: " + ex.Message);
    return;
}

可以从此处下载 C# 和 VB.Net 的完整源代码:

Mike 的导出到 Excel

祝你好运!

如果你的要求足够简单,你可以使用CSV。

如果您需要更多详细信息,请查看 SpreadsheetML。它是一个 XML 架构,可用于创建 Excel 可以本机打开的文本文档。它支持公式,每个工作簿多个工作表,格式等。

我第二次使用 CSV,但请注意 Excel 对工作表中的行数和列数有限制,如下所述:http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010342495.aspx

具体说来:工作表大小 1,048,576 行 x 16,384 列

这适用于 Excel 2010。 处理大量数据时,请记住这些限制。

作为替代方案,您可以使用我的 SwiftExcel 库。它专为高容量 Excel 输出而设计,可将数据直接写入文件,而不会对内存造成影响。

下面是一个用法示例:

using (var ew = new ExcelWriter("C:''temp''test.xlsx"))
{
    for (var row = 1; row <= 100; row++)
    {
        for (var col = 1; col <= 10; col++)
        {
            ew.Write($"row:{row}-col:{col}", col, row);
        }
    }
}