Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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#或SQL Server将批量数据导出到excel中?_C#_Asp.net_Sql Server_Excel - Fatal编程技术网

有没有更好的方法可以使用C#或SQL Server将批量数据导出到excel中?

有没有更好的方法可以使用C#或SQL Server将批量数据导出到excel中?,c#,asp.net,sql-server,excel,C#,Asp.net,Sql Server,Excel,我的应用程序中有一个搜索页面,可以根据两个日期搜索数据。用户还可以将数据导出到excel中。我正在使用普通asp.net网格视图显示数据。在导出到excel时,我使用OPENROWSET方法将数据从sqlserver插入excel(这有时会引发链接服务器空错误,在各种技术站点中给出了所有建议,但有时仍会发生错误) 当用户将一年的数据导出到excel中时,页面导出至少需要20分钟,即使查询返回数据的速度更快,使用openrowset写入excel也需要更多时间。一年的数据大约是200万条记录,早些

我的应用程序中有一个搜索页面,可以根据两个日期搜索数据。用户还可以将数据导出到excel中。我正在使用普通asp.net网格视图显示数据。在导出到excel时,我使用OPENROWSET方法将数据从sqlserver插入excel(这有时会引发链接服务器空错误,在各种技术站点中给出了所有建议,但有时仍会发生错误)

当用户将一年的数据导出到excel中时,页面导出至少需要20分钟,即使查询返回数据的速度更快,使用openrowset写入excel也需要更多时间。一年的数据大约是200万条记录,早些时候我用c#代码将数据写入excel,这也需要更多的时间。一年数据的excel文件大小超过200 mb


是否有更好的批量数据excel导出方法?

SSIS适合导出大量数据。

让SQL Server为您创建一个SSIS包,SSIS包将比代码快得多。为此:

1. In SQL Server Management Studio Right Click on the target database and click on Tasks in the pop-up  menu 
2) Select Import Data
3) On Data Source select Microsoft Excel and browse to where the excel spreadsheet will be.
继续选择并确保保存结果包

该包可以作为SQL Server作业运行,也可以使用dtexec(SQL Server util)命令从命令行运行


SSIS包将非常快地处理2000000行(在我的机器上,它每秒读取10000行-您的结果将有所不同)。

“200万条记录”?2000000行无法放入一张
Excel
表格。
lakhs
既不是英语单词,也不是编程术语。在任何情况下,如果您必须导出那么多数据,那么一定是出了问题——用户应该使用数据库来处理数据,而不是导出数据并自己处理数据。无论如何,在这种情况下,最好使用PowerQuery或PowerPivot连接创建Excel工作表,并让用户检索数据themselves@AxelRichter取决于-使用PowerPivot Excel可以加载更多的处理、聚合等内容。它仍然无法显示更多行。没有人会看到200万行,即使Excel可以全部显示它们。只需在视图中完成服务器内部的聚合,并在Excel内部设置数据源即可访问它。您需要考虑更改为脱机模型。用户发出请求。不等待。离线创建文件…通过电子邮件向用户发送可下载的(zipped?)文件链接。是的,但将问题视为学术问题,我回答了。用户如何处理如此大的excel文件是另一个问题。OP可能应该重新考虑用例。通常情况下,当用户要求完全导出时,这意味着系统不能做他们想做的事情,所以他们尝试自己做。或者该部门反应太慢。或者他们想添加例如营销数据。即使这样,PowerPivot也允许用户读取、匹配、查找、混合其他数据源到自己的内容中。在PowerPivot中加载如此多的数据所需的内存也比单个行少。你可能是对的,但在OP说明他们为什么希望Excel文件中有如此多的数据之前,我们只能猜测。也许是为了离线可移植性,在这种情况下.csv可能会更好。这就是为什么“为什么?”是开发人员应该问的最重要的问题。导出这么多行可能比找到目标并解决问题更昂贵,因为他们不会告诉您性能指标,所以您可以创建他们真正想要的报告。