Это очень сложно сделать, так как рекомендованный Microsoft механизм предполагает использование Office, который отлично подходит для настольных компьютеров, но бесполезен для Интернета.
Бинарный формат .xls
файлов является правильным, поэтому Microsoft представила .xlsx
OpenXML-файлы в Office 2007.
.xslx
предположительно прост - это просто zip-контейнер, полный XML-файлов. Вы можете открыть его с помощью System.IO.Packaging
и отредактировать с помощью System.Xml
. Есть даже пакет совместимости для более старых версий офиса.
К сожалению, это просто не просто - формат .xslx
- это ужасный за пределами слов .
Похоже, что они взяли 16-битный оптимизированный двоичный формат .xls
(изначально разработанный для Windows 3.1) и сериализовали его в XML вместо двоичного. Затем они добавили действительно глупые изменения, например, комментарии к ячейкам на самом деле VML - формат, предположительно отброшенный в IE5! Они также добавили тонну магических чисел и метаданных в XML, так что вы не можете использовать какие-либо преобразования для него, поэтому вы анализируете эту присоску вручную.
Наконец, они сделали полный осел для отладки, и мы регулярно находим .xslx
файлы, которые пакет совместимости сообщает как поврежденные (без указания причины), но последняя версия Office может нормально открыться.
Существует действительно хорошая библиотека с открытым исходным кодом: SpreadsheetLight . Это очень хорошая библиотека, но все, что требует от вас копать и расширять файлы .xslx
, будет болезненным.