我正在编写一个生成Excel报告的程序,目前使用Microsoft.Interop.Excel引用。我的开发计算机上安装了Excel,但最终用户可能没有安装Office。如果最终用户的计算机上没有安装Office,这个工具会失败吗?还是这个交互服务与实际应用程序是分开的?
我正在编写一个生成Excel报告的程序,目前使用Microsoft.Interop.Excel引用。我的开发计算机上安装了Excel,但最终用户可能没有安装Office。如果最终用户的计算机上没有安装Office,这个工具会失败吗?还是这个交互服务与实际应用程序是分开的?
如果您想要制作 .xlsx(Office 2007及以上版本)文件,那么您很幸运。Office 2007+使用OpenXML,它的描述更恰当地说是 .xlsx 文件中嵌入了 XML 文件的 zip 压缩包。
拿一个 Excel 文件(2007+版本)并将其重命名为 .zip,您可以打开它并查看其中的内容。如果您正在使用 .NET 3.5,则可以使用 System.IO.Packaging 库来操作关系和压缩包本身,并且使用 linq to xml 来处理 xml(或者如果您更熟悉的话,也可以使用 DOM)。
否则我建议使用DotNetZip,这是一个强大的操作 zip 文件的库。
OpenXMLDeveloper上有许多关于 OpenXML 的资源,您可以在那里找到更多信息。
如果您想要 .xls (2003及以下版本),则需要研究第三方库或学习文件格式以在没有安装 Excel 的情况下实现此目标。
除非在服务器/个人电脑上安装了Excel或使用外部工具(即使不使用Excel Interop,也是可能的,参见从C#创建Excel(.XLS和.XLSX)文件),否则会失败。 使用Interop需要安装Excel。
如果您使用Excel 2007,请尝试EPPlus。它支持范围、单元格样式、图表、形状、图片等许多其他功能。
有几个选项:
使用Interop需要在运行Excel的机器上安装Excel。在服务器端解决方案中,这将很糟糕。相反,您应该使用像上面提到的工具之一,可以在没有安装Excel的情况下构建Excel文件。
如果用户没有安装Excel但拥有可以读取Excel的工具(如Open Office),那么他们显然能够打开它。Microsoft为那些没有安装Excel的用户提供了一个免费的Excel查看器。
Interop指的是调用其他的东西,这是一种互操作性程序集,所以你正在与其他东西进行互操作...在本例中是Excel,实际安装的Excel。
在这种情况下,是的,它将无法运行,因为它依赖于Excel,你只是调用Excel函数。如果他们没有安装它...就没办法了。
有一些方法可以生成不需要Excel的内容,只要2007文件格式可以使用,以下是其中几种:
正如我所说,这是2007格式,通常情况下,这可能是不能接受的。
FileHelpers是一个免费且易于使用的.NET库,可从文件、字符串或流中导入/导出定长或分隔记录的数据。