无需办公即可从C#创建Excel文件

时间:2010-04-16 17:19:15

标签: c# excel file-io office-interop

我正在编写一个生成excel报告的程序,目前正在使用Microsoft.Interop.Excel引用。我的开发计算机上有Excel,但最终用户可能安装了Office,也可能没安装Office。如果最终用户计算机上没有安装Office,或者此互操作服务是否与实际应用程序分开,此工具是否会失败?

7 个答案:

答案 0 :(得分:40)

如果您对制作.xlsx(Office 2007及更高版本)文件感兴趣,那么您很幸运。 Office 2007+使用OpenXML,缺少更简洁的描述是名为.xlsx的zip文件中的XML文件

获取excel文件(2007+)并将其重命名为.zip,您可以将其打开并查看。如果您使用的是.NET 3.5,则可以使用System.IO.Packaging库来操作关系& zipfile本身,和linq到xml来玩xml(如果你觉得更舒服,只需要DOM)。

否则id reccomend DotNetZip,一个用于操纵zipfiles的强大库。

OpenXMLDeveloper有很多关于OpenXML的资源,你可以在那里找到更多资源。

如果你想要.xls(2003及以下版本),你将需要查看第三方库或者自己学习文件格式,以便在没有安装excel的情况下实现这一目标。

答案 1 :(得分:35)

除非您在服务器/ PC上安装了Excel或使用外部工具(可以不使用Excel Interop,请参阅Create Excel (.XLS and .XLSX) file from C#),否则将失败使用互操作需要安装Excel。

答案 2 :(得分:28)

如果您使用Excel 2007,请尝试EPPlus。支持范围,cellstyling,图表,形状,图片和许多其他内容

答案 3 :(得分:10)

互操作调用别的东西,它是一个互操作性程序集,所以你要与某些东西互操作......在这种情况下,Excel,实际安装的Excel。

在这种情况下,是的,它将无法运行,因为它依赖在excel上,你只是调用excel函数。如果他们没有安装它......运气不好。

有些方法可以在没有Excel的情况下生成,只要2007文件格式正常,这里有几个:

正如我所说,这是 2007格式,通常如果有的话,这就是交易破坏者。

答案 4 :(得分:10)

有一些选择:

  • NPOI - 哪些是免费且开放的 资源。
  • Aspose - 绝对是 不自由但强大。
  • Spreadsheet ML - 基本上是用于创建电子表格的XML。

使用Interop将要求在运行它的计算机上安装Excel。在服务器端解决方案中,这将是非常糟糕的。相反,您应该使用类似上面的工具,它允许您在不安装Excel的情况下构建Excel文件。

如果用户没有Excel但有一个可以读取Excel的工具(如Open Office),那么显然他们可以打开它。 Microsoft为没有Excel的用户提供免费Excel viewer

答案 5 :(得分:7)

使用OleDB,您可以非常轻松地创建,阅读和编​​辑Excel文件。阅读MSDN文档了解更多信息:

http://msdn.microsoft.com/en-us/library/aa288452(VS.71).aspx

我已经使用OleDB从excel文件中读取,我知道你可以创建它们,但我还没有亲手完成。

答案 6 :(得分:3)

您可以使用FileHelpers库的ExcelStorage类,它非常简单易用......您需要在机器上安装Excel 2000或更高版本。

  

FileHelpers是免费且易于使用的   使用.NET库导入/导出   固定长度或分隔的数据   文件,字符串或流中的记录。