Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将大量数据导出到excel_C#_Performance_Excel_Memory_Export - Fatal编程技术网

C# 如何将大量数据导出到excel

C# 如何将大量数据导出到excel,c#,performance,excel,memory,export,C#,Performance,Excel,Memory,Export,我目前正在使用EPPlus将数据导出到excel。对于少量数据,它的工作原理令人钦佩。但它会消耗大量内存,以便导出大量数据 我简要介绍了OOXML和/或MicrosoftOpenXMLSDK2.5。我不确定是否可以使用它将数据导出到Excel 还有第三方提供者库 我想知道什么样的解决方案能够以良好的性能正确地导出大量数据,并且不占用太多空间(理想情况下少于要导出的数据量的3倍) 更新:一些额外的要求。。。 我需要能够导出“颜色”信息(不包括CSV),并且我想要一些易于管理的东西,比如EPPlus

我目前正在使用EPPlus将数据导出到excel。对于少量数据,它的工作原理令人钦佩。但它会消耗大量内存,以便导出大量数据

我简要介绍了OOXML和/或MicrosoftOpenXMLSDK2.5。我不确定是否可以使用它将数据导出到Excel

还有第三方提供者库

我想知道什么样的解决方案能够以良好的性能正确地导出大量数据,并且不占用太多空间(理想情况下少于要导出的数据量的3倍)

更新:一些额外的要求。。。 我需要能够导出“颜色”信息(不包括CSV),并且我想要一些易于管理的东西,比如EPPlus库(不包括XML格式本身)。我找到了另一条线索,他们推荐我正在尝试的Aspose或SpreadsheetGear。我认为第一个答案是可以的。谢谢大家

更新2016-02-16正如信息一样。。。我们现在使用电子表格,我们喜欢它。我们曾经需要支持,这太棒了


谢谢

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


如果你需要更多的细节,请调查。这是一个XML模式,您可以使用它创建一个文本文档,Excel可以以本机方式打开该文档。它支持公式、每个工作簿多个工作表、格式设置等。

I秒使用CSV,但请注意,Excel对工作表中的行数和列数有限制,如下所述:

具体而言: 工作表大小1048576行乘以16384列

这是针对Excel 2010的。在处理大量数据时,请记住这些限制

EPPlus将数据导出到excel。对于少量数据,它的工作原理令人钦佩。但它会消耗大量内存,以便导出大量数据

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

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

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

如您所见,该库非常易于使用,只需调用一个
CreateExcelDocument
函数,并将
数据集
数据表
列表

您可以从这里下载C#和VB.Net的完整源代码:


祝你好运

您也可以使用我的库。它是为高容量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);
        }
    }
} 
使用(var ew=new ExcelWriter(“C:\\temp\\test.xlsx”))
{

对于(VAR行=1;行创建CSV文件。CSV可以直接由Excel打开,并且它们非常容易生成。如果使用<代码> FielestRAM
来编写它,那么消耗的内存应该限于当前行。@罗伯特,谢谢。我会考虑一些原始数据导出,但实际上我的数据包括颜色信息,而且很少。CSV不能包含的信息。当然……它是。@Robert,CSV是文本库,我可以添加颜色信息作为通道值,但我必须编写一些东西才能将其导入并在Excel中显示为颜色。我不能使用CSV,因为我导出的是颜色和更多数据,而不仅仅是普通数据。我将查找SpreadsheetMLSpreadsheetML格式。我将更新添加到我的任务中ion可精确确定使用库的位置(更简单)。谢谢,但我需要excel。我更新了我的问题以添加限制。感谢限制信息。我的数据非常大,但没有达到这个程度。非常感谢迈克。我不记得确切的情况,但我们实际上使用电子表格,它做得很好。但同时我们也使用了64位。我无法证明SpreadsheetGear单独解决了这个问题,但我非常喜欢这个产品。我注意到了您的解决方案。您好@Mike,您的链接不起作用,请提供更新的链接,我希望看到您的解决方案,因为我们需要将大量数据下载到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);
        }
    }
}