我需要使用Excel 2007 File来读取数据。对于哪一个是最好的方法:
请指导我选择。
答案 0 :(得分:18)
以下是我的意见:
1
。使用OLEDB提供程序
只会满足您的需求。例如,如果您必须提取任何单元格格式信息,它对您没有多大帮助。 Jet引擎的错误“行类型猜测”算法可能使这种方法几乎无法使用。但是,如果可以从每个表的前几行唯一地标识数据类型,则这种方法可能就足够了。 Pro:它很快,甚至可以在没有安装MS Excel的机器上运行。
2
。 Excel互操作对象
可能非常慢,特别是与选项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)
无论你如何提出问题,选项1和2几乎都是痛苦的练习。
如果您可以使用SSIS将数据移动到数据库中,并且如果由于其他要求而满足您的需求,那么这也是一个不错的选择。
但首选选项通常是在Excel 2007及更高版本中使用Office Open XML。这没有您使用选项2获得的COM头痛,也没有像使用选项1那样猜测行类型的问题。
通过更精心设计的问题,您可以获得更好的答案。