如何使用c#winform将10000行数据从存储过程移动到excel



情况如下-

  • UserX想要有关PlayerY的信息
  • 目前,我获得了有关PlayerY的详细信息,并运行了两个返回两个数据集的sql脚本,每个数据集大约有10000条记录
  • 然后,我手动将这些集复制并粘贴到Excel工作簿中,并通过电子邮件发送给UserX

目前计划的方法:

  1. 我将为UserX创建一个简单的WinForm或WPF,它将接受PlayerY的详细信息输入
  2. 我将创建两个存储过程,它们将接受表单中的输入

数据是如何从数据库传输到UserX的客户端的?

我之所以这么问,是因为数据集相当大,而且由于规模的原因,某些方法可能会出现无法预见的问题。存储的proc是否应该首先将数据移动到实际的服务器表中,然后再执行第二步,将数据从服务器表移动到Excel中?或者我应该让存储过程返回数据集,因为在没有任何中间服务器表的情况下将它们直接移动到XL中足够容易吗?

如果您计划提取记录thr'c#,

与其一次提取10000条或更多条记录,不如提取特定数量的记录,例如1000、10次。这将使过程更快&更少的内存负载。

您不需要创建任何中间服务器表来存储数据集。

使用c#中的DocumentFormat.OpenXml.Spreadsheet,您可以将数据集写入Xlsx格式,或者使用System.xml创建xml文件,或者使用第三方工具/创建自己的excel xml来创建xls格式。

我建议您在运行时使用C#从存储过程返回的结果中创建.csv文件,可以在Excel中打开.csv文件,这样在结束时仍将Excel作为应用程序

此外,请参阅此链接,因此我不建议您使用办公自动化

段落取自http://support.microsoft.com/kb/257757Microsoft目前不建议也不支持,从任何无人值守、,非交互式客户端应用程序或组件(包括ASP,ASP.NET、DCOM和NT服务),因为Office可能表现出不稳定Office在此环境中运行时的行为和/或死锁。

最新更新