【问题标题】:How can I programmatically create, read, write an excel without having office installed?如何在不安装 Office 的情况下以编程方式创建、读取、编写 Excel?
【发布时间】:2010-11-25 01:22:29
【问题描述】:

我对读取/写入/创建 excel 文件的所有方式感到困惑。 VSTO、OLEDB等,但它们似乎都有必须安装office的要求。

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

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

【问题讨论】:

  • 需要支持哪些版本?
  • 这取决于您需要 MS Excel 的哪些功能。你需要什么花哨的功能吗?
  • 您需要对“丢失的功能”有多大的容忍度。例如,您是否需要维护公式、数据透视表、图表等?还是只是这些文件中的数据?
  • 这个好像以前有人问过,现在找不到了。
  • 查看右侧的“相关”链接,尤其是stackoverflow.com/questions/236926/…stackoverflow.com/questions/153079/…

标签: c# excel


【解决方案1】:

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

【讨论】:

  • 你在开玩笑吧。
  • 这个方法我用过好几次了,简单,效果很好。但是对于网络应用程序,只需将内容类型/mime 类型设置为 excel(我不记得确切的 mime 类型)
  • 而且,根据您的 excel 版本,它通常也会选择格式。粗体表格单元格? Excel 继承了它。背景颜色?也复制...
  • 我一直用它来从网络应用中导出 xls 文件。
  • 这是我这周看到的最酷的东西。我花了几个小时试图找到一种从 PHP 导出 XLS 的好方法
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    改为读取和写入 csv 文件。 Excel 可以很好地读取它们并且它们更易于使用。如果您需要处理 .xls 文件,请尝试支持 OpenOffice 和 Excel。 OpenOffice可以读写excel文件。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          Aspose.Cells

          【讨论】:

          • 在尝试了一些免费的替代方案后,我的团队决定也使用 Aspose.Cells。使用起来非常直观,代码易于维护。
          【解决方案7】:

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

          我假设您无法控制基本文件格式,即无法使用简单的 CSV 或 XML 格式?

          【讨论】:

            【解决方案8】:

            我曾经使用过一个非常棒的库,名为CarlosAg,它使用 Excel XML 格式。这很棒(Excel 可以识别格式),而且速度也非常快。看看here

            哦,顺便说一句,我们过去使用它的原因与您需要它的原因相同。生成这些文件的服务器无法安装 Excel。

            【讨论】:

              【解决方案9】:

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

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

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                  【解决方案11】:

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-03-20
                    • 1970-01-01
                    • 2012-03-18
                    • 2010-09-14
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多