4

情况如下——

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

目前计划的方法:

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

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

我问是因为数据集非常大,并且由于规模的原因,某些方法可能会出现无法预料的问题。存储过程是否应该首先将数据移动到实际的服务器表中,然后再进行第二步并将数据从服务器表移动到 Excel 中?还是应该让存储过程返回数据集,因为无需任何中间服务器表就可以很容易地将它们直接移动到 XL 中?

4

2 回答 2

2

如果您打算通过 c# 获取记录,

而不是一次获取 10000 条或更多记录,而是获取特定的编号。记录例如 1000、10 次。这将使过程更快和更少的内存负载。

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

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

于 2012-07-18T09:57:18.213 回答
1

我建议您使用 C# 根据存储过程在运行时返回的结果创建 .csv 文件,可以在 Excel 中打开一个 .csv 文件,因此最后您仍然拥有 excel 作为应用程序

另请参阅此链接,因此我不建议您使用 Office 自动化

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

于 2012-07-18T09:33:40.467 回答