Возникло исключение C#: «System.Data.OleDb.OleDbException» в System.Data.dll при попытке подключения к Excel

Я пытаюсь прочитать данные из Excel на С# без офисной установки.

Мой код

DataTable dTable;
DataTable dTable_Fixed;

string sProvider = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source= {0};Extended Properties='Excel 12.0;HDR=No;IMEX=1'";
string sourceConstr = string.Format(sProvider.ToString(), file_name);

OleDbConnection con = new OleDbConnection(sourceConstr);
OleDbCommand oleDbCmd = new OleDbCommand();
con.Open();

DataTable dt1 = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

string firstExcelSheetName = dt1.Rows[0][2].ToString();
string query = "select * from [" + firstExcelSheetName + "]";
OleDbDataAdapter data = new OleDbDataAdapter(query, con);
data.TableMappings.Add("Table", "Sheet1");
dTable = new DataTable();

data.Fill(dTable);

Связь не была установлена. Я получаю журнал ошибок.

Возникло исключение: «System.Data.OleDb.OleDbException» в System.Data.dll «iisexpress.exe» (CLR v4.0.30319:/LM/W3SVC/2/ROOT-1-131547875442986389): загружено «C:\Windows\ Microsoft.Net\assembly\GAC_MSIL\System.Numerics\v4.0_4.0.0.0__b77a5c561934e089\System.Numerics.dll». Пропущены символы загрузки. Модуль оптимизирован, и включена опция отладчика «Только мой код». Телеметрия Application Insights (ненастроенная): {"name":"Microsoft.ApplicationInsights.Dev..,"ai.operation.name":"POST FileDownload"},"data":{"baseType":"RequestData","baseData ":{"ver":2,"id":"9AAlQXMsrt4=","name":"POST FileDownload","duration":"00:00:06.9290000","success":false,"responseCode":" 500","url":"http://localhost:52087/api/FileDownload?Company_ID=CO_2005","properties":{"DeveloperMode":"true"}}}} Поток 0x3de0 завершился с кодом 0 (0x0). Программа "[19508] chrome.exe: WebKit" завершилась с кодом код -1 (0xffffffff) Программа «[15740] iisexpress.exe» завершилась с кодом -1 (0xffffffff).

Я что-то упустил?


person Monisha A    schedule 10.11.2017    source источник
comment
Какая строка вызывает исключение?   -  person mjwills    schedule 10.11.2017
comment
У вас установлен провайдер OleDb? microsoft.com/en-us/download/details.aspx? id=13255 Я думаю, это то, что вы бы использовали для этой версии.   -  person theoretical    schedule 10.11.2017
comment
Содержит ли file_name полный абсолютный путь к файлу Excel?   -  person LocEngineer    schedule 10.11.2017
comment
string file_name = HttpContext.Current.Server.MapPath(~/MassUploadFiles/Upload/ + Company_ID + .xlsx); Это мой путь к файлу. Он содержит файл .   -  person Monisha A    schedule 10.11.2017
comment
Управление отладкой будет остановлено на строке con.Open(); Я не получил никакой ошибки.   -  person Monisha A    schedule 10.11.2017
comment
@theoretical Да, я уже установил.   -  person Monisha A    schedule 10.11.2017
comment
@mjwills, Строка: con.Open();   -  person Monisha A    schedule 10.11.2017
comment
Это может быть пробел перед {0} в строке подключения. Попробуйте использовать OleDbConnectionStringBuilder, как описано в принятом ответе здесь: stackoverflow.com/questions/6983973/   -  person LocEngineer    schedule 10.11.2017
comment
@LocEngineer, согласно документам, начальные и конечные пробелы игнорируются. msdn.microsoft.com/en-us/library /ms722656(v=vs.85).aspx, но внутренние пробелы могут быть проблемой?   -  person theoretical    schedule 10.11.2017
comment
У вас есть свойство InnerException, установленное в вашем исключении? Если да, то каково сообщение этого InnerException?   -  person Steve    schedule 10.11.2017
comment
Это может помочь проверить connectionstrings.com/excel. Возможны различные варианты, в том числе с атрибутами версии для разных форматов файлов Excel.   -  person Peter B    schedule 10.11.2017
comment
Я обернул блок try-catch. Теперь я получаю, что внешняя таблица не в ожидаемом формате. сообщение. Я использую Эксель 2016   -  person Monisha A    schedule 10.11.2017
comment
Моя строка подключения выглядит так: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Sankaran\source\repos\AccountMapping_v2\AccountMapping_v2\MassUploadFiles\Upload\CO_2005.xlsx;Extended Properties=Excel 12.0 Xml; HDR = ДА;   -  person Monisha A    schedule 10.11.2017
comment
Excel 2016 - теперь, похоже, виновник. Возможно, вам потребуется установить ACE: microsoft.com/en-us /download/details.aspx?id=13255 См. эту тему здесь: answers.microsoft.com/en-us/office/forum/office_2016-access/   -  person LocEngineer    schedule 10.11.2017
comment
Да Установлено. Теперь я получаю сообщение об ошибке «Внешняя таблица не в ожидаемом формате».   -  person Monisha A    schedule 10.11.2017
comment
Вы пошли на очевидное, то есть проверили, действительно ли он находится в ожидаемом формате? Откройте файл в Notepad++ или любом другом текстовом редакторе. На ПК начинается?   -  person LocEngineer    schedule 10.11.2017
comment
да, это начинается с ПК.   -  person Monisha A    schedule 10.11.2017
comment
Смешной. В этой теме говорится, что это может быть недостающий пакет MSXML 6.0, который необходимо установить: social.msdn.microsoft.com/Forums/en -US/ Попробуйте установить MXSML 6.0 microsoft.com /en-US/download/details.aspx?id=6276   -  person LocEngineer    schedule 10.11.2017