我使用openpyxl生成Excel文件。我首先打开一个现有的工作簿,其中包含一些预定义的样式,例如' MyHeading1',然后设置一个等于此样式的单元格,如下所示:
ws['D5'].style = 'MyHeading1'
这很有效,但我正在努力解决的问题是设置正确的数字格式。一些单元格是数字,而其他单元格是日期。我没有成功地尝试了以下内容。
if isinstance(value, datetime.date):
cell.number_format = 'dd-mmm-yy'
else:
cell.number_format = '# ##0.00'
所以我的问题是处理多个数字格式的正确方法是什么,其中单元格的其他格式是相同的?
答案 0 :(得分:1)
风格的默认值如fond is' Calibri'大小为11.您可以参考此1获取更多详细信息。您无法分配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')
答案 1 :(得分:0)
命名样式具有数字格式,一旦指定了命名样式,便无法更改:
NB。将命名样式分配给单元后,将进行其他更改 样式不会影响单元格。