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
我在 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