2016-11-14 3 views
0

Предположим, что существует существующий файл .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.

ответ

0

Вам нужно будет установить все стили ячеек вручную. Стили столбцов и строк в спецификации не соответствуют ожиданиям. Это обещания для приложений о том, что делать при создании новых ячеек. Существуют разные причины, но скорость - основная, поэтому мы не делаем этого в openpyxl.

+0

Хорошо, но могу ли я сделать это динамически? Я заранее не знаю формат столбцов, но он указан в заданном файле .xlsx. Могу ли я получить формат столбца в openpyxl? –

+0

Также есть идея, почему LibreOffice демонстрирует другое (и желательно) форматирование? –

+0

Да, вы можете найти соответствующую «ColumnDimension» в книге. LO и MS Excel - приложения, в которых важно взаимодействие с использованием, openpyxl - это библиотека форматов файлов. Мы могли бы пересмотреть функциональность в какой-то момент в будущем, но на данный момент это действительно анти-шаблон, который может замедлить работу, и я предпочел бы, чтобы мы были как можно быстрее. –

Смежные вопросы