如何在没有安装Office的情况下以编程方式创build,读取,写入Excel?
我很困惑,所有的bazillion方式读取/写入/创buildexcel文件。 VSTO,OLEDB等,但都似乎有办公室必须安装的要求。
这里是我的情况:我需要开发一个应用程序,将一个Excel文件作为input,做一些计算,并创build一个新的Excel文件,这基本上是第一个Excel文件的修改。 所有的限制,运行这个机器可能没有安装办公室。 (不要问为什么…)
我需要支持所有的 Excel格式。 唯一的优点是格式电子表格本身非常简单。 只是一堆专栏和价值观,没有什么奇特的。 不幸的是没有CSV,因为最终用户可能不知道什么是CSV文件。
用HTML表格格式写你的excel:
<html> <body> <table> <tr> <td style="background-color:#acc3ff">Cell1</td> <td style="font-weight:bold">Cell2</td> </tr> </table> </body> </html>
并给你的文件一个xls扩展名。 Excel将自动转换它
如果没有安装Office,您将需要devise用于了解Excel二进制文件格式的内容(除非您只想打开Office 2007 .xlsx文件)。
我发现的最好的(也是我使用的)是SpreadsheetGear ,除了作为.NET本地代码之外,它还比COM / OLE解决scheme(我过去曾经使用过)更快更稳定,
读取和写入CSV文件。 Excel读取他们就好,他们更容易使用。 如果您需要处理.xls文件,请尝试支持OpenOffice和Excel。 OpenOffice可以读取和写入excel文件。
你有没有考虑数字bazillion和一个:使用Open XML SDK ? 您可以保留样式并根据自己的喜好进行调整。 你可以在一个实际的文件中做任何事情都可以通过编程实现。 SDK附带一个名为Document Reflector的工具,它显示了底层的XML,甚至显示了可用于生成它们的LINQ语句。 这是玩弄它的关键,看看如何进行更改,然后在代码中重新创build。
唯一的警告是这将适用于新的基于XML格式(* .xlsx)而不是旧版本。 有一点点的学习曲线,但更多的材料正在博客和其他网站上的方式。
Excel XLSX文件“只”XML文件 – 更准确地说是包含多个XML文件的ZIP文件。 只需将Excel文件Test.xslx
重命名为Test.zip
,然后使用您的favourit ZIP程序打开即可。 XML模式是标准化的,可用的。 但是我认为只用原始的XML处理工具和框架来操作它们可能并不那么容易。
如果成本不是问题,我build议查看Aspose的Excel产品。 我使用他们的Word产品,我已经满意了。
的Aspose.Cells
Excel文件是专有的格式,所以(afaik)你不可能做到这一点,没有办公室interop可用。 有一些第三方工具存在(这大概是从MS的许可格式?),但我没有用它们自己来评论它们的用处。
我假设你不能控制基本文件格式,即简单的CSV或XML格式是不可能的?
我曾经使用过一个名为CarlosAg的非常好的库,它使用Excel XML格式。 这是伟大的(和Excel认识到格式),也非常快。 看看这里 。
哦,作为一个方便的说明,我们以前使用这个是出于同样的原因,你需要它。 生成这些文件的服务器无法安装Excel。
如果您无法按照@RHicke的build议使用CSV文件,并且假设您正在使用Web应用程序,那么桌面应用程序将按照要求保证安装XL。
我会说,创build你的处理应用程序作为一个Web服务 ,并build立一个XL插件 ,将直接从XL与您的Web服务交互。
对于XLSX文件,请使用http://www.codeplex.com/ExcelPackage 。 否则,就像戴维build议的那样,一些付费的第三方解决scheme就在那里。
我可以理解没有在服务器机器上安装办公室的要求。 有很多像aspose可用的图书馆,其中一些需要许可。 如果您的目标是MS Excel格式,则可以从Microsoft安装本机互操作性库,ACE OLEDB数据提供程序,您可以在计算机上安装该程序并开始读取,以编程方式编写。 您需要根据需要定义连接string和命令。 ( 参考:这篇文章@yoursandmyideas )谈论使用这个库以及设置和疑难解答信息。