Вопрос по c# – OLE DB против открытого XML SDK против Excel.interop

11

Мне нужно прочитать файлы XLSX и извлечь из него максимальное количество контента. Какой из API мне следует использовать?

OLE DB, открытый XML SDK или Excel Interop?

Which is the easiest to use? Can you retrieve all the information using one or the other? i.e, date, times, merged cells, tables, pivottables, etc.
Поначалу Open XML SDK не будет таким простым, но хорошо, что есть надежные библиотеки с открытым исходным кодом, которые делают задачи тривиальными. Мой совет: если вы не возражаете против использования сторонних библиотек, тогда Open XML - это то, что вам нужно. Могу предложить две отличные библиотеки: ClosedXML и EPPlus. Вы можете сразу же начать запрашивать с Linq, что круто. nawfal

Ваш Ответ

1   ответ
17

Вы можете попробовать все из них и выбрать тот, который подходит вам больше всего ...

В зависимости от данных, которые вы хотите прочитать, я предлагаю вам использовать Open XML поверх Interop или Ole DB.
Я не знаю открытого XML SDK, хотя у меня есть некоторый опыт работы сEPPlus библиотека, которую я часто использую и могу сказать только хорошие слова - она быстрая, простая в изучении, с хорошими примерами. Библиотека основана на формате Open Office XML, поэтому я полагаю, что он почти такой же, как и упомянутый вами SDK, и способен легко читать и записывать файлы Excel 2007 и 2010.
На связанной веб-странице вы найдете саму библиотеку, документацию и несколько примеров "Hello World". проекты для скачивания.

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

На втором месте - на всякий случай нужно извлечьtabular data с листа - вы можете играть с OLE DB. Я боюсь, что вы не сможете извлечь любую информацию о форматах, цветах и т. Д., А также данные должны быть в табличном упорядоченном рабочем листе, так что вы можете рассматривать их как таблицу базы данных.

Последний - Interop, потому что:
- это COM-библиотека, так что вам нужно быть очень осторожным при игре с ней через .NET, так как легко вызывать некрасивые и трудные для обнаружения утечки памяти (подтверждается моим плохим опытом) - если вы этого не делаете правильно распорядиться своими объектами, процесс Excel.exe остается открытым,
- это намного медленнее, чем предыдущие способы,
- в принципе, он почти не имеет дополнительной ценности по сравнению с одним из предыдущих методов (EPPlus или OleDB) и требует, чтобы Excel был установлен на клиентском компьютере, так зачем его использовать?

Ну тогда удачи.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded cecemel

Похожие вопросы