如何使用ACE OLEDB提供程序在64位操作系统中读取Excel文件?

我有一个ac#应用程序,我已经转移到一个64位机器。 此应用程序读取一个Excel文件的一些数据input。 我想build立这个项目为64位。 有什么办法让我的程序在这个文件中读取? 我发现很难相信,没有办法使用Excel文件作为input到64位应用程序。 我已经安装了Office 2010 64位以及2010 Office System Driver Beta:数据连接组件,但没有运气。 我敢肯定,我只是错过了一些非常简单的事情。 我的应用程序完全适用于.xls和.xlsx文件的32位环境。 使用64位只能使用.xls而不使用.xlsx。 下面的代码抛出exception,指定的方法不支持(当我试图打开与64位环境xlsx连接)。

例外:

<Exception> <Description>An exception of type 'System.NotSupportedException' occurred and was caught.</Description> <DateTime>2012-10-12 17:53:53Z</DateTime> <ExceptionType>System.NotSupportedException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType> <Message>Specified method is not supported.</Message> <Source>ExcelHelper</Source> <HelpLink /> <Property name="Data">System.Collections.ListDictionaryInternal</Property> <Property name="TargetSite">System.Data.OleDb.OleDbConnection GetConnection(System.String)</Property> <StackTrace> at ExcelOperations.ExcelHelper.GetConnection(String excelFile) at ExcelOperations.ExcelHelper.GetExcelSheetDataSet(String excelFile, String sheetName) at ExcelOperations.ExcelHelper.GetXLSXDataSet(String dataFilePath, String sheetName, Int64 rowNo) at Intralinks.Platform.ObjectImpl.DataSource.ExcelFileSource.UpdateDataFilePath(String dataFilePath)</StackTrace> <additionalInfo> <info name="MachineName" value="NYCVMQCA007" /> <info name="TimeStamp" value="10/12/2012 9:53:53 PM" /> <info name="FullName" value="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" /> <info name="AppDomainName" value="ILPlatform.exe" /> <info name="ThreadIdentity" value="" /> <info name="WindowsIdentity" value="INTRALINKS\VPatel" /> </additionalInfo> </Exception> Category: Logging Exception Priority: 1 EventId: 100 Severity: Error Title:Enterprise Library Exception Handling Machine: NYCVMQCA007 Application Domain: ILPlatform.exe Process Id: 3548 Process Name: C:\IntraLinks\IntraLinks Designer\ILPlatform.exe Win32 Thread Id: 5360 Thread Name: 

代码片段:

  public static OleDbConnection GetConnection(string excelFile) { OleDbConnection objConn = null; try { // Connection String. Change the excel file to the file you // will search. String connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile + ";Extended Properties=\"Excel 12.0 xml;IMEX=1\""; // Create connection object by using the preceding connection string. objConn = new OleDbConnection(connString); // Open connection with the database. objConn.Open(); } catch (Exception) { try { // Connection String. Change the excel file to the file you // will search. String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;"; // Create connection object by using the preceding connection string. objConn = new OleDbConnection(connString); // Open connection with the database. objConn.Open(); } catch (Exception) { throw new NotSupportedException(); } } return objConn; }