2016-11-05 6 views

ответ

3

Вам действительно нужен OleDB для чтения Excel сегодня? На мой взгляд, OleDB немного устарел. Существуют библиотеки с открытым исходным кодом для работы с файлами Excel, которые намного проще в использовании и обеспечивают большую гибкость.

ClosedXML (https://closedxml.codeplex.com/) является одной из таких библиотек. Он хорошо документирован и позволяет как читать, так и записывать файлы Excel с пользовательским форматированием стиля ячейки.

Я использовал OleDB для чтения очень больших файлов Excel тоже работает, но есть определенные проблемы с ним, вот некоторые из них от верхней части моей головы:

  1. Вам нужно будет установить MS ACE OLEDB, который иногда сложно настроить.
  2. Вам нужно будет прочитать файлы Excel в проходах, в то время как с ClosedXML вы можете случайно получить доступ к строкам/ячейкам по id/адресу.
  3. OleDB использует настраиваемый параметр реестра Windows, чтобы проверить количество строк (по умолчанию 8), чтобы определить тип данных для всего столбца, а иногда возникают проблемы с ним, поскольку тип данных определяется неверно. ClosedXML позволяет вам установить конкретный тип данных для любой ячейки.

Я не разработчик ClosedXML, так что это не объявление. Как я уже упоминал, я использовал (и продолжаю использовать) как OleDB, так и ClosedXML в своих проектах. С OleDB я мог читать очень большие файлы Excel (например, 400-800K + строк), либо по строкам, либо с помощью SQL Server «SELECT * FROM OPENROWSET (...)». Кроме того, SQL Server может напрямую записывать файлы Excel с использованием того же ACE-провайдера, и он также работал с очень большими файлами.

Однако ClosedXML я использовал для чтения/записи относительно небольших файлов, но они использовали много настраиваемого форматирования. Поэтому, если вы начнете новый проект, я бы рекомендовал уйти от OleDB.

Единственное ограничение из ClosedXML является то, что он поддерживает только сжатые файлы XML в Excel, то есть Excel версии 2007+. Вы можете найти много примеров на упомянутом выше сайте ClosedXML, который поможет вам начать работу.

Сообщите мне, если это было полезно. Благодарю.

+0

Спасибо Эндрюс !! .. Это помогло мне! – veena

0

Как указано в andrews, рекомендуется использовать стороннюю библиотеку, особенно при работе с форматированием. Альтернативой ClosedXML является EPPlus. Для большей части моего проекта я использовал ClosedXML, но мне пришлось переключиться на EPPlus, потому что он поддерживает диаграммы.

Для ядра ASP.NET можно использовать EPPlus.Core. Я проверил быструю проверку в консольном приложении ASP.NET Core 2.0 и, похоже, работает нормально:

var newFile = new FileInfo("some file.xlsx"); 
using (ExcelPackage xlPackage = new ExcelPackage(newFile)) 
{ 
    var ws = xlPackage.Workbook.Worksheets.Add("etc"); 
    ws.Cells[1, 1].Value = "test"; 

    // do work here 
    xlPackage.Save(); 
}