Python 中的 `xlsxwriter` 中的 `write_formula`

`write_formula` in `xlsxwriter` in Python

我在 Python 中使用 xlsxwriter 创建一个 Excel xlsx。

考虑代码

import xlsxwriter

wb = xlsxwriter.Workbook('Book.xlsx')
ws = wb.add_worksheet('Sheet1')

data = (['Average Start Date','365'],['AAA','2'])

worksheet.add_table(1, 1, 4,4, {'data':data,'first_column':True,'style':'Table Style Light 1','autofilter': False,'columns':[{'header':'Attribute'},{'header':'Value'}]})


ws.write_formula('A4', '=IF(A3>1,"Yes", "No")')
ws.write_formula('A5', '=VLOOKUP("Average Start Date",Table1,2,FALSE)/365')

用 Excel 打开 xlsx 文件后,单元格 A4 显示 No,公式得到计算。另一方面,单元格 A5 显示 #NAME?.

如果我 select 单元格 A5,按 F2,这是用于编辑公式,然后按 Enter 而不明显修改任何内容 A5 中的公式得到计算。

这是为什么? 我将公式添加到 A5 的方式有误吗? 有没有办法让该公式自动计算?

这不是 XlsxWriter 错误,而是 Excel 错误。如果您手动输入公式并点击 return.

,您会得到相同的结果

#NAME? 错误是由于公式引用了一个名为 Table4 的数据区域,该区域不存在。

此外,您的代码片段中存在语法错误。应该是:

ws = wb.add_worksheet('Sheet1')

# Or just
ws = wb.add_worksheet()

此外,您应该在程序末尾添加 wb.close()

[编辑] 在此答案作者的评论中回答

看来Table1需要在公式中写成Table1[],像这样:=VLOOKUP("Average Start Date",Table1[],2,FALSE)/365')。它将显示为 Table1