将数据导出到Excel电子表格

我将在一个通用的工具包上编写基于数据库数据的excel文件。 我以前使用过几种方法:

1)创build一个CSV文件
Excel将打开它,并将数据格式化为每个值进入一个单元格,每行是一行。
缺点:文件扩展名不一定会被excel默认打开。
它似乎在非常大的数据源上“切断”。 从内存中,大约65000行,其余的文件被Excel忽略。

2)生成一个XML电子表格
http://msdn.microsoft.com/en-us/library/bb226687(v=office.11​​).aspx
缺点:当打开“正在尝试打开的文件**的格式与文件扩展名所指定的格式不同时,出现错误”。 它确实打开罚款,但它不能激发信心。
使写SQL到XML尴尬。

前段时间我简单地介绍了使用优秀的Interop方法。 而且我确定在尝试从没有安装excel / office的服务器运行代码时遇到了问题。 这几乎总是如此

通常,代码将通过网页或Silverlight WCF服务运行(如果这有所帮助)。
并通过电子邮件发送给用户,或者也可以select直接打开文件并保存。
包括标题/颜色/公式将是一个奖金

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

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

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

不幸的是,如果您有多个开发人员从源代码​​控制中获取代码并构build代码,那么他们的定价scheme就非常尴尬; 他们正式认为你是同一个团队的一部分,并且需要每个开发者的许可证(即使你是唯一直接在那个代码上工作的程序员)。

由于CSV在大量行后出现中断的问题,所以这种方法已经结束了。

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

XML实际上似乎是最可靠的解决scheme,除了混淆的消息。 如果你能在评论中回答我的问题,我们也可以帮助你。

PS。 如果您可以在生成Excel工作表(您应该)之前确定行数,则可以使用以下两种格式之一来交付结果:小型文件为CSV,大型为XML,折衷为混淆消息(已提供它不会消失)。 根据超过CSV阈值的文件的百分比,这可能是一个可以接受的折中scheme。

我build议使用EPPlus ,将DataTable转换为Excel文件非常简单,并且允许大量的样式选项甚至数据validation。 你甚至不需要在服务器上安装Excel。