Синтаксический анализ файла Excel с использованием .NET - PullRequest
2 голосов
/ 13 июля 2010

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

  • Использование библиотек интропов Office
  • Использование поставщика OLEDB и чтение файла Excel в наборе данных.

Но проблема в том,такой сложности, как некоторые столбцы, ячейки или строки, пустые и т. д.

Каковы наилучшие возможные способы сделать это?

заранее спасибо.

Ответы [ 5 ]

1 голос
/ 13 июля 2010

Я могу порекомендовать ExcelDataReader (лицензию под LGPL, я думаю).Он загружает как файлы .xls, так и .xlsx и позволяет получить электронную таблицу в виде набора данных, причем каждый рабочий лист является отдельной таблицей данных.Насколько я знаю из сценариев, в которых я его использовал, он учитывает пустые строки, пустые ячейки и т. Д. Попробуйте и посмотрите, как вы думаете, справится ли ваша «очень сложная» структура.[Я заметил один негативный отзыв на сайте, но остальные довольно позитивные.У меня возникла проблема с чтением .xlsx, если рабочая таблица была переименована]

В прошлом я также использовал подход OLEDB, но имейте в виду, что у него есть реальные проблемы при попытке вывести типы данных впервые несколько строк.Если тип данных изменяется для столбца, это может привести к неверному выводу.Что еще хуже, когда он действительно ошибается, он часто возвращает значение NULL в качестве значения, что затрудняет (или делает невозможным) определение истинного значения NULL из типа данных, который изменился после первых шести или семи строк.

1 голос
/ 13 июля 2010

Лично я предпочитаю либо использовать способ OLEDB, который в лучшем случае немного неудобен, либо вы можете использовать стороннюю библиотеку, которая потратила время / усилия / энергию для получения доступа к данным.*

SyncFusion имеет довольно хорошую библиотеку для этого.

0 голосов
/ 13 июля 2010

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

Мне кажется, что VTSO / Interop - лучшая стратегия для платформы по двум причинам:

  1. Доступ к данным электронной таблицы будет небольшой частью усилий, необходимых для вашего решения. Таким образом, если использование OLEDB экономит немного времени на доступе к данным, это, вероятно, не будет иметь никакого значения с точки зрения общего объема проекта.
  2. Вам может потребоваться внимательно изучить содержимое отдельных ячеек и принять во внимание контекстную информацию, такую ​​как форматирование. С помощью взаимодействия вы получаете полную видимость содержимого ячеек, контекста и другой контекстной информации на уровне листа, такой как именованные диапазоны и списки. Есть риск предположить, что вам не понадобится информация такого типа при декодировании электронной таблицы.
0 голосов
/ 13 июля 2010

Я сам использовал OLEDB для чтения выгруженных файлов Excel, и он не представляет реальных проблем (за исключением пустых значений в полях вместо пробелов, которые можно проверить с помощью IsDBNull). Также могут быть полезны сторонние инструменты с открытым исходным кодом, такие как NPOI и Excel2007ReadWrite (http://www.codeproject.com/KB/office/OpenXML.aspx).

Я тщательно оценил оба этих сторонних инструмента, и оба они довольно стабильны и легко интегрируются. Я бы порекомендовал файлы NPOI для Excel 2003 и файлы Excel2007ReadWrite для Excel 2007.

0 голосов
/ 13 июля 2010

Мои пользователи сначала сохраняют электронную таблицу Excel в виде файла CSV.Затем они загружают файл CSV в мое приложение.Это значительно упрощает анализ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...