首页 文章

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

提问于
浏览
0

假设存在具有指定列样式的现有 .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 列的属性,则格式在 ExcelLibreOffice 中按预期工作,而代码打印 Cell format is Percent .

在实践中,我需要附加到现有的 .xlsx 文件,保留原始列格式(可能因文件而异) . 我如何实现这一目标?

我使用2.4.0版本的openpyxl .

1 回答

  • 0

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

相关问题