首页 > 解决方案 > 在while循环中使用xlsxwriter编写多个公式到excel表

问题描述

我正在尝试使用xlsxwriterPython 2.7 在工作表的多个单元格中填充公式。我需要将公式作为包含单引号和双引号的字符串传递,如下所示: 'F2','=IF(E2=MIN($E$2:$E$545),E2,"")'其中行值存储在脚本中的变量中,如formularowcountrowcount

我得到这个例外:AttributeError: 'NoneType' object has no attribute 'group'

编码:

while rowcount > formularowcount:
profiledatasheet.write_formula("'F"+str(formularowcount)+"','=IF(E"+str(formularowcount)+"=MIN($E$2:$E$"+str(rowcount)+"),E"+str(formularowcount)+",\"""\")'")

我试图存储字符串本身并将其传递,但​​得到相同的异常:

formulavalue = "'F"+str(formularowcount)+"','=IF(E"+str(formularowcount)+"=MIN($E$2:$E$"+str(rowcount)+"),E"+str(formularowcount)+",\"""\")'"
        profiledatasheet.write_formula(formulavalue)

但是,如果我在调试中打印字符串并将输出粘贴到调试控制台中,它会起作用并返回 0:

print(formulavalue)
'F2','=IF(E2=MIN($E$2:$E$545),E2,"")'

profiledatasheet.write_formula('F2','=IF(E2=MIN($E$2:$E$545),E2,"")')
0

关于我的语法有什么问题的任何想法?

标签: pythonxlsxwriter

解决方案


试试这个(如果你使用 3)

profiledatasheet.write_formula(
    f'F{formularowcount}',
    f'=IF(E{formularowcount}=MIN($E$2:$E${rowcount}),E{formularowcount},"")'
)

对于 python 2 类似

profiledatasheet.write_formula(
'F{0}'.format(formularowcount),
'=IF(E{0}=MIN($E$2:$E${1}),E{0},"")'.format(formularowcount, rowcount)

)


推荐阅读