Не удалось открыть oledbconnection...
Я не смог открыть OleDbConnection, я получаю исключение, когда код вызывает метод Open (). То, что я пытаюсь сделать, это загрузить из excel в таблицу данных.
На моей локальной машине установлен Office 2016 (64), я установил AccessDatabaseEngine_X64,
Иногда я получаю ошибку: внешняя таблица не находится в ожидаемом формате excel 2016.
И иногда я получаю сообщение об ошибке: поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере."
Это мой код :
private DataTable ExcelToDataTable(string dataSource, string selectColumn, string keyword) { string provider = OleDBProvider; string ds = dataSource; string extendedProperties = ExtendedProperties; string cs = String.Format("Provider={0}; Data Source={1}; Extended Properties={2};", provider, ds, extendedProperties); var xlConn = new OleDbConnection(cs); DataTable dtXlSchema; dt = new DataTable("ReviewTable"); try { xlConn.Open(); dtXlSchema = xlConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); for (int i = 0; i < dtXlSchema.Rows.Count; i++) { string sTableName = dtXlSchema.Rows[i]["Table_Name"].ToString(); string query = ""; if (!String.IsNullOrWhiteSpace(keyword)) { query = "Select [" + selectColumn + "] from [" + sTableName + "] where [" + selectColumn + "] like '%" + keyword + "%' Order by [" + selectColumn + "]"; // query = "Select [s-ip] from [" + sTableName + "] where [s-ip] like '%" + kw + "%' Order by [s-ip]"; } else { query = "Select [" + selectColumn + "] from [" + sTableName + "]Order by [" + selectColumn + "]"; // query = "Select [cs-uri-stem] from [" + sTableName + "]Order by [cs-uri-stem]"; // query = "Select [s-ip] from [" + sTableName + "]Order by [s-ip]"; } OleDbDataAdapter da = new OleDbDataAdapter(query, xlConn); da.AcceptChangesDuringFill = true; da.Fill(dt); da.Dispose(); } } catch (Exception ex) { WriteError(ex); } finally { xlConn.Close(); } return dt; }
Что я уже пробовал:
Я перепробовал все эти настройки.
<appSettings> <add key="OleDBProvider" value="Microsoft.ACE.OLEDB.12.0"/> <!--<add key="ExtendedProperties" value="'Excel 8.0;HDR=Yes;IMEX=1'"/>--> <!--<add key="ExtendedProperties" value="'Excel 12.0;HDR=Yes;'"/>--> <add key="ExtendedProperties" value="'Excel 12.0 Xml;HDR=Yes;'"/> </appSettings>