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