Ошибка OleDbConnection «Внешний компонент вызвал исключение» при подключении к файлу Excel - PullRequest
0 голосов
/ 14 февраля 2020

Приложение WinForms считывает данные из файла Excel в DataTable. При первом звонке все работает как надо. При втором вызове (15 минут спустя, регулируется System.Timers.Timer), я получаю следующую ошибку в строке conn1.Open();:

Внешний компонент выдал исключение

Я искал StackOverflow, но не нашел ничего, что вполне отвечает этой проблеме. Я прочитал OleDbConnection получает «Внешний компонент выдал исключение.» , однако это предполагает проверку платформы конфигурации сборки в Visual Studio, которая в моем случае должна быть правильной, поскольку код выполняется правильно при первом вызове.

Ниже мой код:

DataTable dt = new DataTable();
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Mode=Read;Extended Properties=\"Excel 12.0 XML;HDR=Yes\"";
FileInfo file = new FileInfo(path);
OleDbConnection conn1 = new OleDbConnection(connectionString);
conn1.Open(); //Exception is thrown here on second calling
OleDbDataAdapter da = new OleDbDataAdapter(string.Format("SELECT * FROM [Sheet1$]"), conn1);
da.Fill(dt);

path - это всегда новый файл. Старый файл заменяется новым файлом (с другим именем файла) при каждом вызове.

Я боролся с этим уже несколько дней, любая помощь приветствуется.

1 Ответ

0 голосов
/ 14 февраля 2020

Просто зачеркнул код, строка за строкой, и оказалось, что удаление следующей строки заставляет код работать:

FileInfo file = new FileInfo(path);

Если у кого-то есть какие-либо предложения относительно того, почему это так, я было бы интересно узнать.

...