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

xlsxwriter/openpyxl:excel显示正确的格式,但在修改单元格之前不会应用该格式,excel,xlsxwriter,Excel,Xlsxwriter,我在xlsxwriter(以及openpyxl)和excel方面有问题。在打开工作簿,单击单元格,然后按enter键之前,不会使用列格式。该列具有正确的格式,但在执行刚才列出的步骤之前不会显示此格式。我确保我的Excel自动计算。 此外,使用同一行代码,某些列的格式良好,而另一些列则没有 wb = xlsxwriter.Workbook(filename) ws = wb.add_worksheet() numeric = wb.add_format() numeric.set_num_form

我在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中更改列格式,它除了对列的重新计算(双剪辑)单元格外,什么也不做。
感谢您的帮助。

XlsxWriter方法的语法是:

set_column(first_col, last_col, width, cell_format, options)
您可以使用Excel的
A:D
样式表示法,而不是数字零索引的
first\u col、last\u col

worksheet.set_column('E:E', 20)
但是,在您的示例中,您使用的是二维范围,如:

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

这是无效的。

John,xlsxwriter在这种情况下不应该引发异常吗?应该,而且会,但这是我第一次看到这个问题。TBH
set\u column
非常清楚,但用户是来测试我们的!;-)你好,约翰,谢谢你的回答。我用:ws.set_列('Q:Q',10,数字)更正了我的代码,并注释了其他行,但问题仍然存在。与前几行一样,列具有良好的格式,但excel在重新验证单元格之前无法正确显示单元格。我不确定问题是否来自xlsxwriter,因为我与openpyxl有相同的问题,或者在写入过程中分配了格式。事实上,它适用于8台的2列。。。PS:“2D”范围分配不知怎么起作用了!我可以发送生成的xlsx的样本。在windows和osx版本的excel上,问题也是一样的。我尝试使用ws.set_列(16,16,10,数字),同样的问题。。。