假设存在具有指定列样式的现有 .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
. 当在 Excel
中打开 sample_new.xlsx
时, A1
单元格的内容确实是 3.1415926
,单元格样式为 General
. 有趣的是,如果在 LibreOffice Calc
中打开,则单元格显示为所需 314.16%
,单元格样式为 Percent
.
但是,如果在原始 sample.xlsx
文件中直接设置单元格 A1
的属性而不是整个 A
列的属性,则格式在 Excel
和 LibreOffice
中按预期工作,而代码打印 Cell format is Percent
.
在实践中,我需要附加到现有的 .xlsx
文件,保留原始列格式(可能因文件而异) . 我如何实现这一目标?
我使用2.4.0版本的openpyxl .
1 回答
您必须手动设置所有单元格样式 . 规范中的列和行样式并不符合预期 . 他们承诺在创建新单元时应该做些什么 . 有各种原因,但速度是主要原因,为什么我们不在openpyxl中这样做 .