Comments 18
Кхм. А что, для .net до сих пор нет ничего аналогичного скажем Apache POI хотя бы?

Проблема в том, что роль Apache POI фактически выполняют две либы: OpenXML, про которую я немного рассказал вот в этой статье и NPOI, про которую говорится в данном посте. При этом, библиотека NPOI синтаксически, как выяснилось, очень близка к джавовой Apache POI.

Насколько я понимаю, poi это тоже две части — старые форматы и openxml. Ну, примерно. То есть, в целом оно примерно аналогично?

Да, все верно. Библиотека способна работать как со старыми файлами, так и с новыми.

А не проще воспользоваться другим языком конкретно для конвертации XLS в XLSx?
Сконвертировали через внешний вызов и работайте себе дальше.

Бесспорно проще. Но,


  • во-первых, при таком подходе теряется возможность работы с потоком — нам необходимо будет записывать данные в файл, а потом этот файл конвертировать сторонним приложением.
  • во-вторых, разве плохо, если в сети появится информация о том, как получить из xls xlsx использую только C#, тем более, что на форумах периодически такие вопросы всплывают, но, к сожалению, остаются без ответа?
Не совсем понимаю, чем это будет отличаться от указанного в статье «конвертация xls в xlsx», а затем работать с xlsx как вам удобно.

Т.е. проблема именно в чтении xls. А она решается простой конвертацией, а дальше работай как удобно.

Отличается тем, что, если данные приходят в потоке (например, через get-запрос), то нам придётся записать xls файл на диск, сконцентрировать в другой файл xlsx с помощью другого языка, а потом продолжить работать на C# с файлом xlsx.
В предложенном мной варианте можно произвести конвертацию без создания каких-либо файлов и подключения дополнительных сервисов.
Считайте, что это просто один из вариантов решения проблемы, который мне, в результате, подошёл больше.

Все равно не понятен отказ от установки того-же LibreOffice:
libreoffice --headless --convert-to xlsx --outdir ./dest file.xls

Установка libreoffice — это решение из разряда установки Interop, которое имеет аналогичные недостатки:


  1. установка дополнительного, далеко не самого легкого, ПО
  2. требуется время на запуск
  3. прожорливость по памяти

А так, такое решение вполне имеет право на существование, однако, в таком случае, логичнее использовать решения на других языках, решающих данную проблему: это как минимум будет менее ресурсоемким решением.

Все, она появилась: к своему удивлению столкнулся с проблемой исчезновения части текста из статьи при публикации. Почему так происходит, честно говоря, не особо пока разобрался: решал проблему путем добавления/удаления пустых абзацев. Подозреваю, что причина проблемы кроется в использовании Markdown и особенностях его интерпретации

UFO landed and left these words here

Мой косяк. Конечно, бесспорно, информация хранится в бинарном виде. Спасибо за ваш комментарий: статью поправил.

Я вижу уже вторую или третью вашу статью на тему — Как сконвертировать ХХХ в XML. Но никак не могу понять цель этой конвертации. Что вы с этим XML собираетесь делать?

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

Совсем недавно на проекте также проводил исследование на тему работы с excel из dotnet. Правда задача стояла немного другого плана — проводить вычисления через excel файлы.
Что на счет библиотек EPPlus и Spire.net?

Хороший вопрос. EPPlus, на сколько мне известно, не работает с xls, а бесплатная версия Spire имеет ограничения, которые исключили возможность ее использования. Поэтому с указанными библиотеками я, к сожалению, не работал.

Only those users with full accounts are able to leave comments. Log in, please.