哪一个是最好的OLEDB或Excel对象或数据库

我需要使用Excel 2007 File来读取数据。 对于哪一个是最好的方法:

  1. 使用OLEDB Provider
  2. Excel Interop对象
  3. 将Excel数据转储到数据库并使用过程

请指导我选择。

以下是我的意见:

1 。 使用OLEDB Provider

只有简单统一的结构化表格才能满足您的需求。 例如,如果您必须提取任何单元格格式信息,它对您没有多大帮助。 Jet引擎的错误“行类型猜测”算法可能使这种方法几乎无法使用。 但是,如果可以从每个表的前几行唯一地标识数据类型,则这种方法可能就足够了。 Pro:速度很快,甚至在没有安装MS Excel的机器上也能正常工作。

2 。 Excel Interop对象

可能非常慢,特别是与选项1相比,您需要安装MS Excel。 但是,您可以完全访问Excel的对象模型,您可以提取存储在Excel文件中的几乎所有信息(例如:格式信息,颜色,框架等),并且您的工作表可以根据需要进行复杂的结构化。

3 。 将Excel数据转储到数据库并使用过程

取决于您考虑的数据库转储类型,以及您手头有数据库系统。 如果您正在考虑MS访问,这将在内部再次使用Jet引擎,具有与上述方法1相同的优点和缺点。

其他选择:

4 。 编写Excel VBA宏以读取所需数据并将其写入文本文件。 从C#程序中读取文本文件。 Pro:比方法2快得多,在访问元信息方面具有相同的灵活性。 Con:您必须将程序拆分为VBA部分和C#部分。 而且你的机器上需要MS Excel。

5 。 使用第三方库/组件执行此任务。 这里有很多图书馆,免费和商业图书馆。 只需询问Google,或在此处搜索。 很多这些库在机器上不需要MS Excel,如果要将数据作为服务器进程的一部分提取,它们通常是最佳选择。

无论你如何提出问题,选项1和2几乎都是痛苦的运动。

如果您可以使用SSIS将数据移动到数据库中,并且如果由于其他要求而满足您的需求,那么这也是一个不错的选择。

但首选选项通常是使用Office Open XML for Excel 2007及更高版本。 这没有您使用选项2获得的COM头痛,也没有像使用选项1那样猜测行类型的问题。

通过更精心设计的问题,您可以获得更好的答案。