XlsxWriter write_formula()无法正常显示零(0)

时间:2018-07-13 09:15:31

标签: python excel excel-formula python-3.5

我与xlsxwriter合作,我尝试将简单的公式和公式打印结果打印到工作表中

import xlsxwriter
workbook = xlsxwriter.Workbook('filename1.xlsx')
format_val=workbook.add_format()
worksheet = workbook.add_worksheet()
worksheet.write(0,1,5)
worksheet.write(1,1,2)
worksheet.write_formula(3,0, '=SUM(B1:B2)')
workbook.close()
csvf = StringIO(import_file.read().decode())

Here the Image of how to show,当我按 = 时,将输出 7

但是输出也将为零(0)。我知道XlsxWriter不会计算公式的结果,而是将值0存储为公式结果。然后,它会在XLSX文件中设置一个全局标志,说打开该文件时应重新计算所有公式和函数。

我已经尝试过了。它对我有用,但是当我尝试使用大写字母不起作用时,这不是正确的事情:〜

num_formate=format_val.set_num_format('0')
worksheet.write_formula(5,1, '=2+1',num_formate,4)

但是当它打开时,如何显示计算值?

1 个答案:

答案 0 :(得分:1)

如果您将 pandas.ExcelWriter'xlsxwriter' 引擎一起使用,并且 .save() 它,那么它的公式与您预期的一样。对于您的情况:

import pandas as pd
writer = pd.ExcelWriter('filename1.xlsx', engine='xlsxwriter')
workbook  = writer.book
format_val=workbook.add_format()
worksheet = workbook.add_worksheet()
worksheet.write(0,1,5)
worksheet.write(1,1,2)
worksheet.write_formula(3,0, '=SUM(B1:B2)')
writer.save()

但是,这个公式写在第四行第一列(A4)。如果你需要在第三行第二列(B3),你应该使用:

worksheet.write_formula(2,1, '=SUM(B1:B2)')