Я автоматизирую процесс создания пакета отчетов в Excel. Файлы Excel используются в качестве шаблонов отчетов, а заполнители, такие как ^SOME_DATA^
, заменяются скриптом Python, который распаковывает файл .XLSX, выполняет базовый поиск и замену в файлах sharedStrings.xml
и sheet1.xml
, а затем повторно упаковывает готовый файл. , Эта часть работает (наконец-то).
Однако при открытии нового файла в Excel все числа, заменившие заполнители, помечаются Excel как «Число, хранимое как текст» (что, конечно, приводит к сбою как формул, так и форматирования на листе). Большинство заполнителей были сохранены в Excel в sharedStrings.xml
, и с учетом «строковой» части я не удивлен, что они все еще рассматриваются как строки.
Пока ...
Я попытался привести с =VALUE(A1)
(и т. Д.), Чтобы преобразовать текстовые числа в фактические числа ... это работает в интерактивном режиме, но не удается, когда файл создается программно: ячейка формулы отображается как #VALUE!
(Всплывающее окно: «Ошибка в значении»), если вы не отредактируете его и не нажмете Enter.
Я предпочитаю Python, так как он подходит к остальной части автоматизации, но мог бы переделать код поиска / замены / сохранения в VBA, чтобы «вытащить его из двери» в менее автоматизированном состоянии. Однако лично мне не очень повезло с надежностью и надежностью решений VBA.
openpyxl
хорошо (разумно) хорошо подходит для чтения или написания Excel, но не поддерживает внесение изменений в существующий отформатированный файл.