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'

您也可以避免在循环中使用 xrangeenumerate(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'