0

我将开发一个通用工具包,用于根据数据库数据编写 excel 文件。我之前使用过几种方法:

1)创建一个CSV文件
Excel将打开它并格式化数据,每个值进入一个单元格,每一行是一行。
缺点:默认情况下,文件扩展名并不总是由 excel 打开。
它似乎“切断”了非常大的数据源。在文件的其余部分被excel“忽略”之前,它从内存中达到了大约65,000行。

2) 生成 XML 电子表格
http://msdn.microsoft.com/en-us/library/bb226687(v=office.11
​​).aspx 缺点:打开“您尝试打开的文件 ** 位于与文件扩展名指定的格式不同'。它确实打开得很好,但它不会激发信心。
使编写 SQL-to-XML 变得尴尬。

不久前,我简要介绍了使用 excel互操作方法。而且我确信在尝试从没有安装 excel/office 的服务器运行代码时遇到了问题。几乎总是如此

通常,代码将通过网页或 silverlight WCF 服务运行(如果有区别的话)。
并且要么通过电子邮件发送给用户,要么也可以选择直接打开文件并允许他们保存。
包括标题/颜色/公式将是一个奖励

大多数情况下,他们只会复制/粘贴数据。
但是对于大型数据集,它很容易失败,或者真的很慢。

任何人都给我最好的想法如何去做

4

3 回答 3

1

您可以使用Aspose.Cells等商业产品在服务器上生成 C# 格式的 Excel 电子表格,而无需安装 Office。如果您想查看对象模型的外观,他们有一些示例代码可以在 aspx.cs 页面中生成电子表格。

不幸的是,如果你有不止一个开发人员从源代码​​管理中获取代码并构建它,那么他们的定价方案真的很尴尬。他们正式认为您是同一团队的一员,并要求每个开发人员都获得许可证(即使您是唯一直接使用该代码的程序员)。

于 2012-06-07T13:41:06.417 回答
1

由于 CSV 存在在大量行后切断的问题,因此该方法已失效。

使用互操作很棘手。除了确保您在服务器上安装了 Excel 和 PIA,您还需要在单个线程中运行 Excel 代码(使用某种排队机制)。否则,您将开始遇到这方面的问题。

XML 实际上似乎是最可靠的解决方案,除了令人困惑的消息。如果您可以在评论中回答我的问题,我们也可以为您提供帮助。

PS。如果您可以在生成 Excel 工作表之前确定行数(您应该这样做),您可以以 2 种格式之一提供结果:CSV 用于小文件,XML 用于大文件,权衡是令人困惑的消息(提供它不会消失)。根据超过 CSV 阈值的文件的百分比,这可能是一个可以接受的折衷方案。

于 2012-06-07T13:44:52.110 回答
1

我推荐使用EPPlus,将 s 转换为 Excel 文件非常容易,DataTable并允许大量样式选项甚至数据验证。您甚至不需要在服务器上安装 Excel。

于 2012-06-07T13:48:53.643 回答