Python中``xlsxwriter`中的`write_formula`

时间:2015-11-30 23:14:39

标签: python excel-formula xlsx xlsxwriter

我在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的方式是否有错误? 有没有办法让这个公式自动计算?

1 个答案:

答案 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