python - 在while循环中使用xlsxwriter编写多个公式到excel表
问题描述
我正在尝试使用xlsxwriter
Python 2.7 在工作表的多个单元格中填充公式。我需要将公式作为包含单引号和双引号的字符串传递,如下所示:
'F2','=IF(E2=MIN($E$2:$E$545),E2,"")'
其中行值存储在脚本中的变量中,如formularowcount
和rowcount
。
我得到这个例外: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
关于我的语法有什么问题的任何想法?
解决方案
试试这个(如果你使用 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)
)
推荐阅读
- python - 我正在尝试通过根据 2 列对其进行排序来组织我的 csv 数据
- c++ - 如何使用 CImg 打开图像?
- php - 带有两个下拉菜单的 PHP 表单未发送
- amazon-web-services - 如何使用 S3FS 挂载 AWS s3 以允许任何用户完全访问
- typescript - typeRoots tsconfig.json 为 node_modules/@types 设置,但尽管安装了所有关联的 @types,但 vs 代码仍然无法识别
- php - 基于选择调用jQuery的下拉菜单
- sql - 在 Oracle 中准确计算经过的年数,考虑闰年
- html - 新行 \n 在 MongoDB Atlas 中不起作用
- java - 为什么 TableView 不显示 JSON 数组?
- javascript - Passport.js Google 注销用户仍然存在