Есть ли способ считывать данные Excel в ASP.NET Core
(построен на .Net Core)? Я не могу ссылаться на OleDB
в project.json
моего основного проекта .net. Есть ли другой способ сделать это?Как получить OleDb для чтения excel в базовом проекте asp.net
ответ
Вам действительно нужен OleDB для чтения Excel сегодня? На мой взгляд, OleDB немного устарел. Существуют библиотеки с открытым исходным кодом для работы с файлами Excel, которые намного проще в использовании и обеспечивают большую гибкость.
ClosedXML (https://closedxml.codeplex.com/) является одной из таких библиотек. Он хорошо документирован и позволяет как читать, так и записывать файлы Excel с пользовательским форматированием стиля ячейки.
Я использовал OleDB для чтения очень больших файлов Excel тоже работает, но есть определенные проблемы с ним, вот некоторые из них от верхней части моей головы:
- Вам нужно будет установить MS ACE OLEDB, который иногда сложно настроить.
- Вам нужно будет прочитать файлы Excel в проходах, в то время как с ClosedXML вы можете случайно получить доступ к строкам/ячейкам по id/адресу.
- 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, который поможет вам начать работу.
Сообщите мне, если это было полезно. Благодарю.
Как указано в 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();
}
Спасибо Эндрюс !! .. Это помогло мне! – veena