【问题标题】:OLE DB vs OPEN XML SDK vs Excel.interopOLE DB vs OPEN XML SDK vs Excel.interop
【发布时间】:2012-04-28 16:33:00
【问题描述】:

我需要读取 XLSX 文件并从中提取最大数量的内容。我应该使用哪个 API?

OLE DB、开放式 XML SDK 或 Excel 互操作?

  • 哪个最容易使用?
  • 您能否使用其中一种方法检索所有信息?即日期、时间、合并单元格、表格、数据透视表等。

【问题讨论】:

  • Open XML SDK 一开始并不那么简单,但好在有健全的开源库,这使得任务变得微不足道。我的建议是,如果您不介意使用第三方 dll,那么 Open XML 就是您的最佳选择。我可以推荐的两个优秀库是 ClosedXML 和 EPPlus。您可以立即开始使用 Linq 进行查询,这很酷。

标签: c# oledb openxml


【解决方案1】:

您可以尝试所有这些,然后选择最适合您的...

根据您要读取的数据,我建议您使用 Open XML over Interop 或 Ole DB。
我不知道一个开放的 XML SDK,虽然我有一些使用 EPPlus 库的经验,我经常使用它并且只能说好话 - 它快速,易于学习,有很好的例子。该库基于 Open Office XML 格式,所以我想它与您提到的 SDK 几乎相同,并且能够轻松读写 Excel 2007 和 2010 文件。
在链接的网络上,您会找到一个库本身、文档和一些示例“Hello World”项目供下载。

为什么首先要使用那个库?因为有了它,您不仅可以读取单元格的值,还可以读取它们的颜色、字体、宽度和高度、合并以及所有详细的内容,您不仅可以读取,还可以进行修改。更重要的是,您不需要安装 Excel 来执行此操作。

第二点 - 以防您需要从工作表中提取表格数据 - 您可以使用 OLE DB。恐怕您将无法提取有关格式、颜色等的任何信息,并且数据必须在表格组织的工作表中,因此您可以将其视为数据库的表。

最后一个是Interop,因为:
- 它是一个 COM 库,因此在通过 .NET 使用它时需要非常小心,因为很容易导致一些丑陋且难以发现的内存泄漏(我自己的糟糕经历证实了) - 如果你不处置他们的对象正确地,它会打开 Excel.exe 进程,
- 它比以前的方法慢得多,
- 基本上,它几乎没有以前的方法之一(EPPlus或OleDB)的附加值,并且需要在客户的机器上安装Excel,那么为什么要使用它呢?

那么祝你好运。

【讨论】:

  • 非常全面的答案,谢谢。我已经测试了 openxml SDK,我必须说它需要一些样板代码。让我们看看 EPP。
  • 选择 COM 路线的一个原因是来自 Microsoft 的综合 API。虽然第三方库必须涵盖 99 位 PC 开发人员的用例,但它们的功能可能还不完整。好答案+1。我最喜欢这里的 Open XML 选项。只是很遗憾你要写很多样板。
  • 微软本身不推荐使用 Interop 进行服务器部署
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 2011-07-08
  • 1970-01-01
  • 2022-08-03
  • 2010-12-29
  • 2012-03-02
  • 2016-05-16
  • 1970-01-01
相关资源
最近更新 更多