xlwings 无法更改第 6 行下方的字体

xlwings cannot change font below row 6

下面是我为更改 xlsx 文件输出中的字体而编写的代码:

wb = xw.Book('aapl.xlsx')
sht = wb.sheets('Sheet1')
last_cell = sht.range("A1").end(Direction.xlDown).end(Direction.xlToRight)
print('Last cell at: (' + str(last_cell.column) + ', ' + str(last_cell.row) + ')' + '\n')

for i in range(1, last_cell.column):
    for j in range(1, last_cell.row):
        sht.cells(i, j).api.Font.Name = 'JetBrains Mono'

for ws in wb.sheets:
    ws.autofit(axis='columns')

wb.save()

这里的问题是:我想在我的文件中将字体类型设置为JetBrains Mono,但我不知道为什么它只能更改为第六行。我尝试打印出 last_cell 的位置以查看是否有任何错误,并且还在第二个 for 循环中换出 last_row.column 以查看是否 range(1, 107) (107 是行数在我的文件中)有效。但是,不幸的是,最终还是这样。 how the file I ended up getting looks like

您可以在代码中简化一些事情:

  • 您可以将一种字体应用于一系列单元格,而不需要遍历每个单元格
  • 同时,xlwings 支持 font.name,无需使用 api 解决方法
  • expandcurrent_region 应该会让您的生活更轻松

这段代码应该就是您所需要的:

wb = xw.Book('aapl.xlsx')
sht = wb.sheets('Sheet1')

sht['A1'].expand().font.name = 'JetBrains Mono'