如何批量导出数据到excel

时间:2014-02-11 09:23:00

标签: c# asp.net sql-server excel

我有大约80到90列的表,它有大约800000到900000的数据,我需要使用asp.net和c#将数据导出到40000左右。

我尝试使用Open-XML DOM方法从数据集导出数据,但它会挂起系统并在某个时候出现Memory Out of Bound错误。

可以将任何其他方法从sqlserver导出数据到Microsoft excel 2007/2010。

4 个答案:

答案 0 :(得分:3)

您知道excel可以没有问题地打开CSV(逗号分隔值)文件吗?

这是我能看到的最好 - 也是最薄的方式。

不要将它们放入数据集中。使用阅读器并在阅读时将其写入响应流。无需在记忆中实现它们。

答案 1 :(得分:1)

DOM使其变得简单,因为所有内容都是强类型的。遗憾的是,DOM方法需要在内存中加载整个Open XML部分,这可能导致Out of Memory异常。

您还可以使用类似SAX的写作功能,如Brian Jones的以下文章中所述:

Writing Large Excel Files with the Open XML SDK

答案 2 :(得分:0)

当你处理这些庞大的数据时,TomTom建议的方法是最好的..但是如果你想要导出的文件是xls或xlsx,那么你可以尝试将Excel文件当作数据源并使用OleDb连接数据源(本例中为Excel文件)。并使用插入查询将行插入到excel文件中。

您也可以尝试使用Microsoft.Office.Interop.Excel写入excel文件..但我仍然不确定处理如此繁重的数据需要多少时间..

答案 3 :(得分:0)

您可以使用标准和最快的导出工具bcp.exe:
http://www.excel-sql-server.com/sql-server-export-to-excel-using-bcp-sqlcmd-csv.htm