在openpyxl中为新单元格使用列样式

时间:2016-11-14 19:41:27

标签: excel openpyxl

假设存在具有指定列样式的现有.xlsx文件。作为最小示例,创建一个空的sample.xlsx文件,并通过单击列A将其数字样式设置为Percent(与默认General相反)。

现在,执行以下代码

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 - 列的属性,则格式在{ {1}}和Excel,代码打印LibreOffice

实际上,我需要附加到现有的Cell format is Percent文件,保留原始列格式(可能因文件而异)。我如何实现这一目标?

我使用2.4.0版本的openpyxl。

1 个答案:

答案 0 :(得分:0)

您必须手动设置所有单元格样式。规范中的列和行样式并不符合预期。他们承诺在创建新单元时应该做些什么。有各种原因,但速度是主要原因,为什么我们不在openpyxl中这样做。