Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在openpyxl中使用多个数字格式和名称样式_Python_Openpyxl - Fatal编程技术网

Python 在openpyxl中使用多个数字格式和名称样式

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:

我正在使用openpyxl生成Excel文件。我首先使用一些预定义的样式(如“MyHeading1”)打开现有工作簿,然后将单元格设置为与此样式相等,如下所示:

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',则无法更改数字格式。每当我像上面那样更改数字格式时,它就会更改所有具有该样式的单元格的数字格式。您可以附加更多代码吗?也许我可以试着弄明白。