从C#创build没有办公室的Excel文件

可能重复:
从C#创buildExcel(.XLS和.XLSX)文件

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

除非在服务器/ PC上安装了Excel,或者使用了外部工具(这可以不使用Excel Interop,请参阅从C#创buildExcel(.XLS和.XLSX)文件 ), 否则将会失败使用interop需要安装Excel。

如果您对制作.xlsx(Office 2007及更高版本)文件感兴趣,那么您很幸运。 Office 2007+使用的是OpenXML,由于缺less更好的描述,所以它是一个名为.xlsx的zip文件中的XML文件

把一个excel文件(2007+)重新命名为.zip,你可以打开它并看一看。 如果您使用的是.NET 3.5,则可以使用System.IO.Packaging库来处理关系和zip文件本身,并使用linq to xml来与xml一起玩(或者如果您感觉更舒适的话,也可以只使用DOM)。

否则,ID推荐使用DotNetZip ,这是一个操作zipfiles的function强大的库。

OpenXMLDeveloper有大量有关OpenXML的资源,你可以在这里find更多的资源。

如果你想.xls(2003及以下版本),你将不得不查看第三方库,或者也许自己学习文件格式来实现这一点,没有安装Excel。

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

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

在这种情况下,是的,它将无法运行,因为它取决于 Excel,你只是调用Excel函数。 如果他们没有安装…运气不好。

有没有Excel的生成方法,只要2007年的文件格式是好的,这里有几个:

正如我所说,这是2007年的格式 ,通常如果有的话,这是交易断路器。

有几个select:

  • NPOI – 这是免费和开源的。
  • Aspose – 绝对不是免费的,但强大。
  • 电子表格ML – 用于创build电子表格的基本XML。

使用Interop将需要将Excel安装在运行它的机器上。 在服务器端解决scheme,这将是可怕的。 相反,您应该使用上面的工具,可以在不安装Excel的情况下构buildExcel文件。

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

使用OleDB,你可以很容易地创build,读取和编辑excel文件。 阅读MSDN文档以获取更多信息:

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

我用OleDB从excel文件读取,我知道你可以创build它们,但我没有做到这一点。

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

FileHelpers是一个免费且易于使用的.NET库,用于从文件,string或stream中的固定长度或分隔logging导入/导出数据。