繁体   English   中英

将数据导出到Excel电子表格

[英]Exporting data to an excel spreadsheet

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

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

2)生成XML电子表格
http://msdn.microsoft.com/zh-CN/library/bb226687(v=office.11​​).aspx
缺点:打开“您尝试打开的文件**的格式与文件扩展名指定的格式不同”时出错。 它确实可以打开,但是并不能激发信心。
使编写SQL到XML变得笨拙。

不久前,我简要介绍了使用excel Interop方法的情况。 而且我确信尝试从未安装excel / office的服务器运行代码时遇到问题。 几乎总是这样

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

目前大多数情况下,他们只是复制/粘贴数据。
但是,如果数据集很大,则很容易发生故障,或者速度真的很慢。

任何人都给我最好的主意如何去做

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

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

由于CSV存在在大量行之后中断的问题,因此该方法已被淘汰。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM