Excel, LibreOffice, ClosedXML
Понадобилось тут мне из-под C# с использованием ClosedXML прочитать xlsx файл. Что же могло пойти не так?
Прикол в том, что если файл "с нуля" создан в LibreOffice, то ClosedXml при попытке чтения такого файла может влегкую вывалить ошибку типа
1 | System.InvalidOperationException: "Sequence contains no matching element" |
И с этим ничего не сделаешь (( В то же время абсолютно такой же файл, созданный в Excel, читается и обрабатывается "на ура".
Конечно, есть варианты: создать в LibreOffice, открыть потом в Excel, пересохранить, скрестить пальцы и надеяться, что ClosedXml такого бастарда сожрет.
Или вообще переходить на OpenXml, и работать уже с ним.
Что самое забавное: если файл изначально был создан в Excel, то дальнейшее его редактирование в LibreOffice не рушит структуру и позволяет вполне адекватно работать с файлом через ClosedXml.
Проблема в том, что лично у меня задачка не настолько глобальная, чтоб ковырять OpenXml. Так что (опять же лично для себя!) я принял волюнтаристкое решение xlsx-файлы создавать только в Excel.
Как ситуация будет в OpenOffice / Р7 Office / прочие перелицовки - без понятия, а экспериментировать времени и желания нет.
P.S. Доктор (вот же неугомонный!) выяснил, что пересохранения файла от LibreOffice через стандартный Excel уже позволит файл читать механизмами ClosedXml.