![](/img/trans.png)
[英]What is the best / fastest way to export large set of data from C# to excel
[英]What is the fastest way to export a DataTable in C# to MS Excel?
正如标题所说,我在 C# 中有大量数据表,我需要尽可能快地导出到 Excel,同时具有合理的内存消耗。
我尝试使用以下方法:
EPPlus
(目前最快的)OpenXML
(比EPPlus
慢 - 不确定这是否有意义,因为EPPlus
可能使用OpenXML
?)SpreadsheetLight
(慢)ClosedXML
(大表的OOM异常)假设海量数据集(最多 1,000,000 行,50 列)和无限的开发时间,我可以导出的最快方式是什么?
编辑:我需要的不仅仅是一个以 A1 开头的基本表格。 我需要表格从我选择的单元格开始,我需要能够格式化包含数据的单元格,并且有多个选项卡,所有选项卡都包含自己的数据集。
谢谢。
您没有对数据在 excel 文件中的外观指定任何要求。 我想,您不需要任何复杂的逻辑,只需在正确的列中设置正确的数据即可。 在这种情况下,您可以将数据放入CSV (逗号分隔值)文件中。 Excel 可以很好地读取此文件。
CSV 文件示例:
Column 1,Column 2,Column 3
value1,value1,value1
value2,value2,value2
...
根据要求,这里是创建 csv 文件的代码示例。
var csvFile = new StringBuilder();
csvFile.AppendLine("Column 1,Column 2,Column 3");
foreach (var row in data)
{
csvFile.AppendLine($"{row.Column1Value},{row.Column2Value}, row.Column3Value}");
}
File.WriteAllText(filePath, csvFile.ToString());
您可以使用一些外部库来解析 csv 文件,但这是我能想到的最基本的方式 atm。
Excel 只是一种 XML 文件格式。 如果你去掉所有的帮助库,并认为你可以比 EPPPlus 或 OpenXML 的人在编码方面做得更好,那么你可以只使用 XML Stream Writer 并将正确标记的 Excel XML 写入文件。
您可以利用各种标准文件缓冲和缓存来尽可能快地写入,但这些都不会特定于 Excel 文件 - 只是标准缓冲写入。
假设......无限的开发时间,我可以导出的最快方式是什么?
手动滚动您自己的 XLSX 导出。 它基本上是压缩的 XML。 因此,将您的 XML 流式传输到ZipArchive
,它或多或少会尽可能快。 如果您流式传输它而不是缓冲它,那么对于任何大小的导出都应该修复内存使用情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.