Открытие Excel (созданного с помощью EPPLUS) с помощью OleDB

У меня есть код от коллеги, этот код создает несколько excel-листов с Epplus. С моим кодом я хотел бы добавить извлечение базы данных 10k +/- строк. Из-за большого количества данных с Epplus требуется слишком много времени, потому что вам нужно писать каждую ячейку. С OleDB это занимает всего несколько секунд. Но я не могу открыть ранее созданное excel от Epplus с OleDB. Даже с разными строками подключения.

Этот код работает отлично, если вы разделяете два блока кода.

var excelPath = "C:\\test_" + DateTime.Today.ToString("yyyyMMdd_") + DateTime.Now.ToString("hh") + DateTime.Now.Minute.ToString() + ".xlsx"; using (ExcelPackage xlPackage = new ExcelPackage(new FileInfo(excelPath))) { ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets.Add("Schedule V"); worksheet.Cell(1, 1).Value = "test"; xlPackage.Save(); xlPackage.Dispose(); } var strCn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Properties='Excel 12.0 Xml';"; using (OleDbConnection conn = new OleDbConnection(strCn)) { conn.Open(); OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = "CREATE TABLE [table1] (id INT, name VARCHAR, datecol DATE );"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO [table1](id,name,datecol) VALUES(1,'AAAA','2014-01-01');"; cmd.ExecuteNonQuery(); conn.Close(); } 

Я пробовал следующие строки подключения, но все они дают ту же ошибку:

OleDbException был необработанным, внешняя таблица не в ожидаемом формате.

Моя непонятная строка подключения, которую я пробовал:

 var strCn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Properties='Excel 12.0';"; var strCn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Properties='Excel 12.0 Xml';"; var strCn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Properties='Excel 12.0 Xml;HDR=YES';"; var strCn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1';"; var strCn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Properties='Excel 8.0;HDR=YES';"; var strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelPath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"; 

Что я здесь делаю неправильно?

Я думаю, это должно быть так, а не hardcoding вы должны использовать класс OleDbConnectionStringBuilder

 OleDbConnectionStringBuilder connectionStringBuilder = new OleDbConnectionStringBuilder(); connectionStringBuilder.Provider = "Microsoft.ACE.OLEDB.12.0"; connectionStringBuilder.DataSource = excelPath; // This is your Excel File Full Path connectionStringBuilder.Add("Mode", "Read"); const string extendedProperties = "Excel 12.0;IMEX=1;HDR=YES"; connectionStringBuilder.Add("Extended Properties", extendedProperties); String connectionString = connectionStringBuilder.ToString(); // Create connection object by using the preceding connection string. using (var objConn = new OleDbConnection(connectionString)) { // Open connection with the database. objConn.Open(); // Do operations with your File here } 

Я получал эту ошибку последовательно с .xlsx-файлами, созданными с помощью EPPlus 4.0.4. Я помнил, что это работало до перехода на EPPlus 4.x. Я понизился до 3.1.3.3, и я больше не получаю эту ошибку.

  • Могу ли я получить номер строки Excel с помощью OleDB?
  • Получение исключения Oledb при обновлении столбца в excel
  • Экземпляр Excel для DataGrid
  • Указанный приведение недействительно при использовании OleDbCommand
  • Сообщение об ошибке «внешняя таблица не находится в ожидаемом формате», когда я пытался загрузить файл в программу C #
  • System.Data.OleDb.OleDbException: неверный адрес в Интернете. Как подключиться к файлам excel, расположенным на веб-сервере, с помощью OleDb
  • Чтение очень больших данных из файла Excel 2013 с использованием ошибки диапазона OleDB
  • Как выбрать рабочий лист по умолчанию из файла excel
  • читать данные excel на сервере sql, используя поставщик oledb, имеет проблему
  • извлекать данные excel по каждой ячейке, используя соединение oledb
  • Обновите Excel 2007 с помощью OleDb
  • Interesting Posts

    Удалите весь текст и символы, кроме некоторых

    Как отобразить желаемый текст в гиперссылке с помощью кода VBA

    Из двух идентичных функций VBA неожиданно возвращается ошибка #NAME

    Формула Excel с несколькими вложенными И и ИЛИ-выражениями

    Автозаполнение до конца данных в столбце B VB.Net

    Как сделать динамические массивы из динамического массива в Excel VBA?

    VBA – как получить данные из файла excel, только что загруженного в ваш текущий файл excel

    Диапазон копирования Excel в массив, щелкнув по флажку

    Разбирайте книги Excel и сохраняйте специальные вкладки как .csv-файлы

    Исходные данные Excel неправильного направления

    Excel VBA- Ошибка выполнения 1004, открывающая книгу

    памяти в Java Eclipse при генерации отчета о проверке данных с использованием XSSF

    VBA – сохранение любого рабочего стола пользователей

    импорт данных в УЖЕ СОЗДАННУЮ базу данных mySQL

    Использование макроса VLookup для возврата текстового значения из заданного диапазона чисел

    Давайте будем гением компьютера.