Как стать автором
Обновить

Комментарии 8

В условиях, что:
  • Запускается из-под Windows
  • Установлен MS Office
  • Стоит/не лень поставить IronPython

Можно воспользоваться для тех же задач библиотекой Microsoft.Office.Interop.Excel. Пример кода есть на сайте ipy.
Минусы такого решения перечислены выше (+ Automation жутко тормозит на сколько-нибудь больших данных), плюс — не требует глубокого погружения в формат.
Спасибо за вариант.
Возможно, для кого-то это подойдет.

Вот тут очень хорошо описана работа python с Excel
в том числе, и через честные com-объекты
habrahabr.ru/post/232291/#com

Но у нас серверная часть на debian
А вы пробовали xlwings (http://xlwings.org/)? Так как он работает через COM, то изменять оригинальный файл он не должен. Однако, я могу ошибаться.
апд: Ну и да, чтобы все это работало вам конечно же нужна машина с экселем.
Про этот вариант знаю, но для нас он не подходит, к сожалению.
У нас debian на сервере и разворачивать win-сервер для этой простой задачи не хотелось бы, тем более, решение есть и достаточно простое.
Рискую набрать минусов, но как насчет предложить банку написать систему взамен файлов? Есть опыт написания чего-то похожего.
Предлагали, но это отдельная история, не техническая.
Не думаю, что они будет интересна на этом ресурсе.

Опыт есть, в том числе и в написании калькуляторов для банковских и страховых продуктов,
интеграции нашей системы одновременно с десятком страховых компаний (с банком это решение интеграцией сложно назвать).

Но если для банка есть решение, к которому он привык и которое решает все задачи,
зачем проверенный инструмент менять на что-то другое, неизвестное и страшное.
В него (файл Excel) уже вложены какие-то усилия
и психологически очень сложно просто взять это и выбросить,
заплатить какие-то деньги за что-то неизвестое.
Подскажите, пожалуйста, если в документ добавляются новые строки, то придется в sheet1.xml перенумеровывать следующие строки внутри тегов row и mergeCells? Или есть более просто способ (с сохранением форматирования)?
<row r="1">...</row>
<row r="2">...</row>
...
<mergeCell ref="A17:I17"/>
Видимо так.
Эта статья рассматривает довольно узкие условия, когда нужно просто заменить значения в некоторых ячейках.

Как идея (не проработанная), можно сделать достаточное кол-во пустых строк и просто скрывать не используемые строки, оставляя только те, которые потребовались.

Тогда нумерацию можно не менять.

То есть тогда задача сводится снова к этой узкой области «только редактирование».
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории