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接続文字列はありますか?
これは、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;
これは私のために働いた:
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() + ";";
}