Openpyxl:写入不同格式的单元格
Openpyxl: write cells with different format
我正在写一篇excelsheet。我想用相同的脚本编写 header(列名)和数据(带 2 位小数的浮点数)。
为此,我使用了这段代码:
# Write the header
for i in xrange(len(header)):
sheet.cell(row=1,column=i+1).value = header[i]
# Write the data
for i in xrange(len(data)):
sheet.cell(row=2,column=i+1).style.number_format.format_code = '0.00E+00'
sheet.cell(row=2,column=i+1).value = float(data[i])
book.save(os.path.join(folder,'excelReport.xlsx'))
这给了我一个例外:
AttributeError: 'str' object has no attribute 'format_code'
我不是 100% 确定我在这里做错了什么。
只需设置单元格的数字格式:
sheet.cell(row=2,column=i+1).number_format = '0.00E+00'
您也可以避免在循环中使用 xrange
。 enumerate(sequence, start)
当您确实需要处理单个单元格时更好。但是,如果您只是使用序列,您可以简单地附加它们。您的代码可能可以重构为如下所示。
写header
sheet.append(header)
# Write the data
for row in data:
sheet.append([float(v) for v in row])
for cell in sheet.iter_rows(row=2):
cell.number_format = '0.00E+00'
我正在写一篇excelsheet。我想用相同的脚本编写 header(列名)和数据(带 2 位小数的浮点数)。
为此,我使用了这段代码:
# Write the header
for i in xrange(len(header)):
sheet.cell(row=1,column=i+1).value = header[i]
# Write the data
for i in xrange(len(data)):
sheet.cell(row=2,column=i+1).style.number_format.format_code = '0.00E+00'
sheet.cell(row=2,column=i+1).value = float(data[i])
book.save(os.path.join(folder,'excelReport.xlsx'))
这给了我一个例外:
AttributeError: 'str' object has no attribute 'format_code'
我不是 100% 确定我在这里做错了什么。
只需设置单元格的数字格式:
sheet.cell(row=2,column=i+1).number_format = '0.00E+00'
您也可以避免在循环中使用 xrange
。 enumerate(sequence, start)
当您确实需要处理单个单元格时更好。但是,如果您只是使用序列,您可以简单地附加它们。您的代码可能可以重构为如下所示。
写header
sheet.append(header)
# Write the data
for row in data:
sheet.append([float(v) for v in row])
for cell in sheet.iter_rows(row=2):
cell.number_format = '0.00E+00'