1

64 ビット マシンに移動した ac# アプリケーションがあります。このアプリケーションは、データ入力のために Excel ファイルを読み込みます。このプロジェクトを 64 ビットでビルドしたいと考えています。プログラムにこのファイルを読み込ませる方法はありますか? Excelファイルを64ビットアプリへの入力として使用する方法がないとは信じがたいです。Office 2010 64 ビットと 2010 Office System Driver Beta: Data Connectivity Components をインストールしましたが、うまくいきません。本当に単純なものが欠けているだけだと確信しています。私のアプリケーションは、.xls および .xlsx ファイルの 32 ビット環境で完全に動作します。64 ビットでは、.xls でのみ機能し、.xlsx では機能しません。次のコードは、指定されたメソッドがサポートされていないという例外をスローしています(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;
    }
4

0 に答える 0