xlsxwriter / openpyxl:excel显示正确的格式,但在修改单元格之前不会应用它

时间:2016-06-29 20:01:05

标签: excel xlsxwriter

我遇到了xlsxwriter(也有openpyxl)和excel的问题。在我打开工作簿,单击单元格,然后按Enter之前,不使用列格式。列具有正确的格式,但在出现刚刚列出的步骤之前不会显示此格式。我确保我的Excel具有自动计算功能。 此外,使用相同的代码行,某些列格式良好,其他列则没有。

wb = xlsxwriter.Workbook(filename)
ws = wb.add_worksheet()
numeric = wb.add_format()
numeric.set_num_format(0x02)  # also tried with 0x44 accounting, same results
... (get the request csv object)
for item in (request):
    col=0
    row +=1
    for field in fields:
      if field:
        ws.write(row, col,item[field])
      col += 1
    if 'inventory' in item:
      if len(item['inventory']) > 0:
        ws.write(row, col,item['inventory'][0]['count'],numeric)
        ws.write(row, col+1,item['inventory'][0]['reorder_point'],numeric)
        ws.write(row, col+2,item['inventory'][0]['restock_level'],numeric)

ws.set_column('Q2:Q'+str(row+1), 10, numeric)
ws.set_column('R2:R'+str(row+1), 10, numeric)
ws.set_column('T2:T'+str(row+1), 10, numeric)
ws.set_column('U2:U'+str(row+1), 10, numeric)
ws.set_column('V2:V'+str(row+1), 10, numeric)
ws.set_column('AB2:AB'+str(row+1), 10, numeric)
ws.set_column('AC2:AC'+str(row+1), 10, numeric)
ws.set_column('AD2:AD'+str(row+1), 10, numeric)

wb.close()

在此截断的代码中,列Q,U,V,AB,AC和AD无法正确显示,而列R和T则无法正确显示。由于我对xlsxwriter和openpyxl都有同样的问题,excel有问题吗?我究竟做错了什么? 最后一条线索:如果我在excel中更改列格式,除了重新计算(双重cliqued)列的单元格外,它什么都不做。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

XlsxWriter set_column()方法的语法是:

set_column(first_col, last_col, width, cell_format, options)

您可以使用Excel的first_col, last_col样式表示法代替数字零索引A:D

worksheet.set_column('E:E', 20)

但是,在您的示例中,您使用的是2D范围:

ws.set_column('Q2:Q5', 10, numeric)

这不是有效的。