我正在编写一个生成excel报告的程序,目前正在使用Microsoft.Interop.Excel引用。我的开发计算机上有Excel,但最终用户可能安装了Office,也可能没安装Office。如果最终用户计算机上没有安装Office,或者此互操作服务是否与实际应用程序分开,此工具是否会失败?
答案 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的情况下生成,只要2007文件格式正常,这里有几个:
正如我所说,这是 2007格式,通常如果有的话,这就是交易破坏者。
答案 4 :(得分:10)
有一些选择:
使用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库导入/导出 固定长度或分隔的数据 文件,字符串或流中的记录。