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

时间:2017-01-16 19:09:59

标签: python openpyxl

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

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

这很有效,但我正在努力解决的问题是设置正确的数字格式。一些单元格是数字,而其他单元格是日期。我没有成功地尝试了以下内容。

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

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

2 个答案:

答案 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。将命名样式分配给单元后,将进行其他更改   样式不会影响单元格。

https://docs.microsoft.com/en-us/azure/storage/common/storage-network-security#grant-access-from-an-internet-ip-range