我在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?
。
如果我选择单元格A5
,请按F2,这是用于编辑公式,然后按Enter键而不显式修改A5
中的公式计算的任何内容。
这是为什么?
我将公式添加到A5
的方式是否有错误?
有没有办法让这个公式自动计算?
答案 0 :(得分:1)
这不是XlsxWriter错误,它是Excel错误。如果您手动输入公式并点击返回,则会得到相同的结果。
#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