web-dev-qa-db-ja.com

C#のExcel 2016のoledb接続文字列

C#を使用して2016 MS Excelファイルにアクセスしようとしましたが、接続文字列は2013 MS Excelまでしか機能しません。

私の現在の接続文字列:

Provider = Microsoft.ACE.OLEDB.12.0; Data Source = c:\ myFolder\myExcel2007file.xlsx; Extended Properties = "Excel 12.0 Xml; HDR = YES";

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

6
Ravi Anand

これは、Office 365プログラムを使用して、Office 13のローカルインストールからOffice 16にアップグレードした後に発生しました。この例外が発生していました。「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;
10
JnJnBoo

これは私のために働いた:

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() + ";";
}
3
Danimal521