Передо мной встала задача: надо импортировать данные из программы на .Net в XLS-файл (формат MS Excel). Нужно также уметь задавать для данных в файле шрифты, цвета, параметры печати и прочие бесполезные свойства.
Microsoft предлагает для этого запускать Excel и обращаться к нему. И это — единственный способ работы с форматом, официально поддерживаемый компанией. Само собой разумеется, что на каждом компьютере, на котором будут запускать мою программу должен быть установлен MS Office. И никого не смущает, что даже для записи банальнейшей таблицы из 10 ячеек в файл приходится запускать многомегабайтного монстра — Excel.
В общем, я решил найти другой путь. Как оказалось, существует множество библиотек, работающих с XLS-файлами напрямую, без запуска Excel. Но подавляющее большинство из них — платные.
Из бесплатных библиотек я выделил две:
Полнофункциональной бесплатной библиотеки для .Net я, к сожалению, не нашёл. Однако, JExcelAPI без труда запускается с помощью IKVM. Это, конечно, не самое изящное решение, но оно работает. А в тех случаях, когда нужны только базовый функционал можно использовать MyXLs.
Microsoft предлагает для этого запускать Excel и обращаться к нему. И это — единственный способ работы с форматом, официально поддерживаемый компанией. Само собой разумеется, что на каждом компьютере, на котором будут запускать мою программу должен быть установлен MS Office. И никого не смущает, что даже для записи банальнейшей таблицы из 10 ячеек в файл приходится запускать многомегабайтного монстра — Excel.
В общем, я решил найти другой путь. Как оказалось, существует множество библиотек, работающих с XLS-файлами напрямую, без запуска Excel. Но подавляющее большинство из них — платные.
Из бесплатных библиотек я выделил две:
- MyXLs — написана на C#, лицензия MIT, поддерживает базовое чтение и запись, форматирование. Проект развивается.
- JExcelAPI — написана на Java, LGPL, очень мощная библиотека — поддерживает практически всё, что может понадобиться (включая картинки и формулы)
Полнофункциональной бесплатной библиотеки для .Net я, к сожалению, не нашёл. Однако, JExcelAPI без труда запускается с помощью IKVM. Это, конечно, не самое изящное решение, но оно работает. А в тех случаях, когда нужны только базовый функционал можно использовать MyXLs.