我正在使用openpyxl生成Excel文件。我首先打开一个现有的工作簿,其中包含一些预定义的样式,如“MyHeading1”,然后设置一个等于此样式的单元格,如下所示:
ws['D5'].style = 'MyHeading1'
这是有效的,但我正在努力的是设置正确的数字格式。一些单元格是数字,而其他单元格是日期。我试过以下没有成功。
if isinstance(value, datetime.date):
cell.number_format = 'dd-mmm-yy'
else:
cell.number_format = '# ##0.00'
所以我的问题是什么是处理多个数字格式的正确方法,其中单元格的其他格式是相同的?
样式有一个默认值,例如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')
命名样式具有数字格式,一旦指定了命名样式,就无法更改:
NB。一旦为单元格指定了命名样式,对样式的其他更改将不会影响单元格。
https://openpyxl.readthedocs.io/en/stable/styles.html#named-styles