Предположим, что существует существующий файл .xlsx
с указанными стилями столбцов. В качестве минимального примера создайте пустой файл sample.xlsx
и нажав в столбце A
, установите его стиль номера Percent
(в отличие от значения по умолчанию General
).Используйте стиль столбца для новых ячеек в openpyxl
Теперь выполнить следующий код
import openpyxl as pyxl
import math
sample = 'sample.xlsx'
new = 'sample_new.xlsx'
wb = pyxl.load_workbook(sample)
ws = wb.active
ws['A1'] = math.pi
print 'Cell format is %s' % ws['A1'].number_format
wb.save(new)
Выход на печать Cell format is General
. И когда sample_new.xlsx
открывается в Excel
, содержимое A1
ячейки действительно 3.1415926
с типом ячейки General
. Интересно, что если открыт в LibreOffice Calc
, ячейка отображается по желанию 314.16%
и тип ячейки читает Percent
.
Если, однако, в исходном файле sample.xlsx
один непосредственно устанавливает свойство ячейки A1
, а не всей A
-column, форматирование работает, как ожидалось, как в Excel
и LibreOffice
, в то время как код печатает Cell format is Percent
.
На практике мне нужно добавить существующий файл .xlsx
, сохранив исходное форматирование столбцов (которое может отличаться от файла к файлу). Как мне это достичь?
Я использую 2.4.0 версию openpyxl.
Хорошо, но могу ли я сделать это динамически? Я заранее не знаю формат столбцов, но он указан в заданном файле .xlsx. Могу ли я получить формат столбца в openpyxl? –
Также есть идея, почему LibreOffice демонстрирует другое (и желательно) форматирование? –
Да, вы можете найти соответствующую «ColumnDimension» в книге. LO и MS Excel - приложения, в которых важно взаимодействие с использованием, openpyxl - это библиотека форматов файлов. Мы могли бы пересмотреть функциональность в какой-то момент в будущем, но на данный момент это действительно анти-шаблон, который может замедлить работу, и я предпочел бы, чтобы мы были как можно быстрее. –