问题 OLE DB与OPEN XML SDK vs Excel.interop


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

OLE DB,打开XML SDK或Excel Interop?

  • 哪个最容易使用?
  • 你能用一个或另一个检索所有信息吗?即日期,时间,合并单元格,表格,数据透视表等

8937
2018-04-28 16:33


起源

开放的XML SDK起初并不是那么简单,但是有一个好的开源库可以使任务变得微不足道。我的建议是如果你不介意使用第三方dll,那么Open XML就是你要走的路。我建议的两个优秀的库是ClosedXML和EPPlus。您可以通过Linq直接开始查询,这很酷。 - nawfal


答案:


您可以尝试所有这些并选择最适合您的那个......

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

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

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

最后一个是Interop,因为:
- 它是一个COM库,所以你需要在通过.NET玩它时要非常小心,因为很容易造成一些丑陋且很难找到内存泄漏(由我自己证实不好的经验) - 如果你不处理它们的对象正确地,它打开了Excel.exe进程,
- 它比以前的方法慢得多,
- 基本上,它几乎没有更多的附加价值,以前的方法之一(EPPlus或OleDB),并要求在客户端的机器上安装Excel,那么为什么要使用它?

那么祝你好运吧。


16
2018-04-28 18:42



非常全面的回答,谢谢。我已经测试了openxml SDK,我必须说它需要一些样板代码。我们来看看EPP吧。 - cecemel
进入COM路由的一个原因将是来自Microsoft的综合API。虽然第三方库必须涵盖99个PC开发人员的用例,但它们可能仍然不完整。好的答案+1。我最喜欢Open XML选项。只是伤心你要写很多样板。 - nawfal
Microsoft本身不建议使用Interop进行服务器部署 - Ives