使用ADO 3.5将数据从Excel导入到64位应用程序中

我目前正在开发一个64位C#应用程序,需要从Excel电子表格中导入其数据。 我听说最好的方法是使用ADO数据连接。 但是,我已经阅读(并经历过)为了实现这个目的,我必须编写一个32位应用程序,因为没有用于64位应用程序的OleDb odbc驱动程序。

问题是,我不能编译我的应用程序作为一个32位应用程序或程序的其他部分(这是不可重写)将打破。

我无法从64位应用程序导入Excel数据,这似乎是一个相当荒谬的问题。 我如何解决这个问题? 或者,如果没有,有什么解决办法可用?

两种可能的解决scheme:

  1. 改用Open XML SDK 。 这是Office 2007特定的,但它直接处理文件,不必通过任何数据库驱动程序。 这是我select的武器,因为它比自动化更快,更less,可以处理更“先进”的任务,如格式化。

  2. 编译一个单独的x86二进制文件,并根据需要从x64应用程序启动该进程。 导入器应用程序可以使用某种forms的IPC提供反馈,也可以简单地将文件转换为CSV文件,这些文件可以在x64应用程序中本地读取。 (我不完全是这种types的kludge的粉丝,但你做你必须做的…)

我同意,我们仍然没有x64 JET或ACE驱动程序,这种方式很荒谬,但是现在看起来似乎是这样 。 即使MSDASQL不会为你工作; 有一个64位的库,但我读过,Excel组件仍然只能在32位模式下工作。

你有没有考虑过使用VSTO(Microsoft Visual Studio Tools for Office,我相信它现在已经包含在VS 2008中,并且可以从Microsoft免费下载到早期版本)? 还是使用OLE自动化?

用于.NET的SpreadsheetGear是一个Excel兼容的.NET组件,它是用C#编写的安全托pipe代码,并编译为“任何CPU”,因此它可以与32位和64位.NET一起使用。 这是.NET的一大优势–SpreadsheetGear.dll的一个构build与32位.NET CLR和64位.NET CLR一样好。

你可以在这里看到在线样本,并在这里下载免费试用版。

免责声明:我自己的SpreadsheetGear LLC