我有大约80到90列的表,它有大约800000到900000的数据,我需要使用asp.net和c#将数据导出到40000左右。
我尝试使用Open-XML DOM方法从数据集导出数据,但它会挂起系统并在某个时候出现Memory Out of Bound错误。
可以将任何其他方法从sqlserver导出数据到Microsoft excel 2007/2010。
答案 0 :(得分:3)
您知道excel可以没有问题地打开CSV(逗号分隔值)文件吗?
这是我能看到的最好 - 也是最薄的方式。
不要将它们放入数据集中。使用阅读器并在阅读时将其写入响应流。无需在记忆中实现它们。
答案 1 :(得分:1)
DOM使其变得简单,因为所有内容都是强类型的。遗憾的是,DOM方法需要在内存中加载整个Open XML部分,这可能导致Out of Memory异常。
您还可以使用类似SAX的写作功能,如Brian Jones的以下文章中所述:
答案 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