2016-05-12 2 views
1

C#を使用して2016年のMS Excelファイルにアクセスしようとしていますが、接続文字列は2013年のMS Excelまでしか動作していません。C#のExcel 2016用のoledb接続文字

私の現在の接続文字列:

プロバイダ= Microsoft.ACE.OLEDB.12.0;データソース= C:\ MYFOLDER \ myExcel2007file.xlsx。 拡張プロパティ= "Excel 12.0 Xml; HDR = YES";

MS Excel 2016用に変更されたoledb接続文字列はありますか?

答えて

1

これが私の仕事:

private string ExcelConnection(string fileName) 
{ 
    return @"Provider=Microsoft.Jet.OLEDB.4.0;" + 
      @"Data Source=" + fileName + ";" + 
      @"Extended Properties=" + Convert.ToChar(34).ToString() + 
      @"Excel 8.0" + Convert.ToChar(34).ToString() + ";"; 
} 
6

を。これは、Office 365のプログラムを介してオフィス16へのOffice 13のインストールをローカルからアップグレードした後、私のために起こりました。この例外が発生しました。「Microsoft.ACE.OLEDB.12.0」プロバイダがローカルマシンに登録されていません。

Office 365のインストールプロセスでドライバをインストールする方法が見つかりませんでした。

私はhttps://www.microsoft.com/en-us/download/details.aspx?id=13255をインストールしなければなりませんでした。x64バージョンでは問題が解決されず、32ビットバージョンを使用しなければなりませんでした。それを使用して

のApp.config

で私の接続文字列
<add key="Excel07ConnectionString" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"/> 

コード:

  var excelConnectionString = ConfigurationSettings.GetExcelConnection(fileLocation); 
      var dataTable = new DataTable(); 

      using (var excelConnection = new OleDbConnection(excelConnectionString)) 
      { 
       excelConnection.Open(); 
       var dataAdapter = new OleDbDataAdapter("SELECT * FROM [Users$]", excelConnection); 
       dataAdapter.Fill(dataTable); 
       excelConnection.Close(); 
      } 
      Console.WriteLine("OpenExcelFile: File successfully opened:" + fileLocation); 
      return dataTable; 
+0

重要なのはx64bitsについて言及しました。それはすべて私の問題でした。 – celerno

関連する問題