如何在不安装办公室的情况下以编程方式创建,读取,编写Excel?

时间:2009-09-02 18:24:54

标签: c# excel

我很困惑,所有的方式都是读取/写入/创建excel文件。 VSTO,OLEDB等,但它们都似乎要求必须安装办公室。

以下是我的情况:我需要开发一个应用程序,它将excel文件作为输入,进行一些计算并创建一个新的excel文件,它基本上是对第一个excel文件的修改。所有这些都限制了运行它的机器可能没有安装办公室。 (不要问为什么......)

我需要支持所有 excel格式。唯一的优点是格式电子表格本身非常简单。只是一堆列和价值观,没什么特别的。遗憾的是,由于最终用户可能甚至不知道CSV文件是什么,因此没有CSV。

11 个答案:

答案 0 :(得分:47)

以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会自动转换它

答案 1 :(得分:8)

如果没有安装Office,您将需要一些旨在了解Excel二进制文件格式的内容(除非您只想打开Office 2007 .xlsx文件)。

我找到的最好的(我使用的)是SpreadsheetGear,它除了是.NET原生之外,还比COM / OLE解决方案(我用过的)更快更稳定过去)

答案 2 :(得分:6)

读取和写入csv文件。 Excel读取它们就好了,它们更容易使用。如果您需要处理.xls文件,请尝试支持OpenOffice和Excel。 OpenOffice可以读写excel文件。

答案 3 :(得分:2)

您是否考虑过使用Open XML SDK的方式数字和数字?您可以保留样式并根据自己的喜好进行调整。您可以在实际文件中执行的任何操作都可以以编程方式实现。 SDK附带了一个名为Document Reflector的工具,它显示了底层的XML,甚至显示了可用于生成它们的LINQ语句。这是玩弄它的关键,看看如何进行更改,然后在代码中重新创建。

唯一需要注意的是,这适用于基于XML的新格式(* .xlsx)而不是旧版本。有一点点学习曲线,但更多的材料正在博客和其他网站上发挥作用。

答案 4 :(得分:1)

Excel XLSX文件“只是”XML文件 - 更确切地说是包含多个XML文件的ZIP文件。只需将Excel文件Test.xslx重命名为Test.zip,然后使用您的favourit ZIP程序将其打开即可。 XML模式是afaik,标准化和可用的。但我认为仅使用原始XML处理工具和框架来操纵它们可能并不容易。

答案 5 :(得分:1)

如果费用不是问题,我建议查看Aspose的Excel产品。我使用他们的Word产品,我很满意。

Aspose.Cells

答案 6 :(得分:0)

Excel文件采用专有格式,因此(afaik)如果没有可用的办公室互操作,您将无法执行此操作。存在一些第三方工具(可能会从MS获得格式许可?)但我自己并没有用它来评论它们的用途。

我认为你无法控制基本文件格式,即简单的CSV或XML格式是不可能的?

答案 7 :(得分:0)

我曾经使用一个名为CarlosAg的非常好的库,它使用Excel XML格式。它很棒(Excel识别格式),速度也非常快。请查看here

哦,作为旁注,我们过去常常使用它,原因与您需要的原因相同。生成这些文件的服务器无法安装Excel。

答案 8 :(得分:0)

如果您无法按照@RHicke的建议使用CSV文件,并假设您正在使用网络应用,那么桌面应用将保证根据要求安装XL。

我会说,将您的处理应用程序创建为 webservice ,并构建一个 XL插件,它将直接从XL与您的Web服务进行交互。

答案 9 :(得分:0)

对于XLSX文件,请查看使用http://www.codeplex.com/ExcelPackage。否则,一些付费的第三方解决方案就在那里,就像大卫建议的那样。

答案 10 :(得分:0)

我可以理解在服务器计算机上没有安装办公室的要求。 有许多像aspose这样的库,但有些库需要许可证。 如果您的目标是MS Excel格式,那么可以使用Microsoft的本机互操作性库ACE OLEDB数据提供程序,您可以将其安装在计算机上并以编程方式开始阅读和编写。您需要根据需要定义连接字符串和命令。 (Ref: This article @yoursandmyideas)讨论了如何使用此库以及设置和故障排除信息。