在openpyxl中使用带有名称样式的多种数字格式

问题描述 投票:0回答:2

我正在使用openpyxl生成Excel文件。我首先打开一个现有的工作簿,其中包含一些预定义的样式,如“MyHeading1”,然后设置一个等于此样式的单元格,如下所示:

ws['D5'].style = 'MyHeading1'

这是有效的,但我正在努力的是设置正确的数字格式。一些单元格是数字,而其他单元格是日期。我试过以下没有成功。

if isinstance(value, datetime.date):
    cell.number_format = 'dd-mmm-yy'
else:
    cell.number_format = '# ##0.00'

所以我的问题是什么是处理多个数字格式的正确方法,其中单元格的其他格式是相同的?

python openpyxl
2个回答
1
投票

样式有一个默认值,例如fond是'Calibri',大小是11.您可以参考this1获取更多详细信息。您无法分配cell.number_format的原因可能是您将单元格指定为常规形式,然后使用不再是日期格式的isinstance(value, datetime.date)。您可以检查ws['D5'].number_format进行验证。以下代码可以帮助您:

wb = Workbook()
ws1 = wb.create_sheet(title="example")
ws1['D5'].value = datetime.datetime.strptime('24052010', '%d%m%Y').date()
if isinstance(ws1['D5'].value, datetime.date):
    ws1['D5'].number_format = 'dd-mmm-yy'
else:
    ws1['D5'].number_format = '# ##0.00'
wb.save(filename = 'test.xlsx')

0
投票

命名样式具有数字格式,一旦指定了命名样式,就无法更改:

NB。一旦为单元格指定了命名样式,对样式的其他更改将不会影响单元格。

https://openpyxl.readthedocs.io/en/stable/styles.html#named-styles

© www.soinside.com 2019 - 2024. All rights reserved.