Python 在openpyxl中使用多个数字格式和名称样式
我正在使用openpyxl生成Excel文件。我首先使用一些预定义的样式(如“MyHeading1”)打开现有工作簿,然后将单元格设置为与此样式相等,如下所示:Python 在openpyxl中使用多个数字格式和名称样式,python,openpyxl,Python,Openpyxl,我正在使用openpyxl生成Excel文件。我首先使用一些预定义的样式(如“MyHeading1”)打开现有工作簿,然后将单元格设置为与此样式相等,如下所示: ws['D5'].style = 'MyHeading1' 这是可行的,但我正在努力设置正确的数字格式。一些单元格是数字,而其他单元格是日期。我试过下列方法,但没有成功 if isinstance(value, datetime.date): cell.number_format = 'dd-mmm-yy' else:
ws['D5'].style = 'MyHeading1'
这是可行的,但我正在努力设置正确的数字格式。一些单元格是数字,而其他单元格是日期。我试过下列方法,但没有成功
if isinstance(value, datetime.date):
cell.number_format = 'dd-mmm-yy'
else:
cell.number_format = '# ##0.00'
因此,我的问题是,在单元格的其他格式相同的情况下,处理多个数字格式的正确方法是什么?样式有一个默认值,例如found是'Calibri',size是11。您可以参考此以获取更多详细信息。无法指定cell.number格式的原因可能是您将单元格指定为常规格式,然后使用不再是日期格式的
isinstance(value,datetime.date)
。您可以检查ws['D5'].number\u格式来验证它。以下代码可能会帮助您:
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')
命名样式具有数字格式,一旦指定了该命名样式,则无法更改:
注意。将命名样式指定给单元后,将进行其他更改
更改样式不会影响单元格
问题是,一旦我使用ws['D5']设置了样式。样式='MyHeading1',则无法更改数字格式。每当我像上面那样更改数字格式时,它就会更改所有具有该样式的单元格的数字格式。您可以附加更多代码吗?也许我可以试着弄明白。