【发布时间】:2009-11-09 21:38:32
【问题描述】:
我需要通过 C# 创建一个 excel 文件。我读过一些地方,说创建 XML 文档是最简单的方法?我需要有多个命名选项卡,并且能够指定特定单元格是文本、日期时间、数字等...有什么建议或好的例子吗?
【问题讨论】:
我需要通过 C# 创建一个 excel 文件。我读过一些地方,说创建 XML 文档是最简单的方法?我需要有多个命名选项卡,并且能够指定特定单元格是文本、日期时间、数字等...有什么建议或好的例子吗?
【问题讨论】:
您需要System.IO.Packaging API - 这将允许您按照Inserting Values into Excel 2007 Cells 中的说明生成 .xlsx 文档。安装了免费的Microsoft Office Compatibility Pack 的 Excel 2003 和 XP 也可以使用 Excel 2007 格式。
【讨论】:
System.IO.Packaging 构建Excel 的示例?我在处理 Excel 的文档中找不到任何内容。
这很难做到,因为 Microsoft 推荐的机制涉及使用 Office,这在桌面上很好,但对网络无用。
.xls 文件的二进制格式是正当的,因此微软在 Office 2007 中引入了.xlsx OpenXML 文件。
.xslx 应该很简单——它只是一个装满 XML 文件的 zip 容器。您可以使用System.IO.Packaging 打开它并使用System.Xml 进行编辑。甚至还有适用于旧版 Office 的兼容性包。
不幸的是,它并不简单 - .xslx 的格式是 horrible beyond words。
看起来他们采用了 16 位优化二进制 .xls 格式(最初为 Windows 3.1 设计)并将其序列化为 XML 而不是二进制。然后他们添加了非常愚蠢的更改,例如单元格 cmets 实际上是 VML - 据说是 IE5 删除的格式!他们还在 XML 中添加了大量幻数和元数据,因此您不能对其使用任何类型的转换,因此您需要手动解析这个傻瓜。
他们终于把它变成了一个完整的调试工具,我们经常发现 .xslx 文件被兼容性包报告为损坏(没有给出原因),但最新版本的 Office 可以正常打开。
有一个非常好的开源库:SpreadsheetLight。这是一个非常好的库,但是任何需要您自己挖掘和扩展 .xslx 文件的事情都会很痛苦。
【讨论】: