openpyxl往Excel里写公式的问题
求助各位大佬!我用openpyxl的FORMULAE模块往exce里写入函数lsumproduct()时,如果在Python中指定sumproduct()的参数为确定的单元格,如sumproduct(A6,B6),可以在Excel中正常运行并计算出结果。
但我目前想不给出精确的单元格位置如A6,而用关键字匹配找到行坐标,如我找到的单元格为 ws.cell(find_row,8),代码写成 ws1.cell(find_row,8).value='=ws1.cell(find_row,7) * ws1.cell(find_row,5)' ,在Excel中无法识别find_row为哪行,只能在单元格ws1.cell(find_row,8)中显示“=ws1.cell(find_row,7) * ws1.cell(find_row,5)”,无法运行计算过程。
请问上述问题该如何解决?
你把python中的变量名直接写到写入公式中去,excel当然不会知道这个变量是什么,你试试这样写:
ws1.cell(find_row,8).value='=%s*%s' % (ws1.cell(find_row,7), ws1.cell(find_row,5)) txxcat 发表于 2020-4-7 01:05
你把python中的变量名直接写到写入公式中去,excel当然不会知道这个变量是什么,你试试这样写:
谢谢!我明白你说的意思了。
但是接下来还有个问题,我按你的意见修改后,打开EXCEL会提示“发现XXX.xlsx中部分内容有问题,是否让我们偿付恢复”,我点击“是”进入Excel后,提示该单元格的公式被删除了。
麻烦你再看看这个怎么解决呢,之前没遇到过。 如果点 否 进入Excel会如何? xiangjianshinan 发表于 2020-4-7 06:54
如果点 否 进入Excel会如何?
点击否无法进入该Excel呢 g5698191 发表于 2020-4-7 08:24
点击否无法进入该Excel呢
这是碰到了非法公式导致,你需要调试一下,看看写入的具体内容是什么。 txxcat 发表于 2020-4-7 09:39
这是碰到了非法公式导致,你需要调试一下,看看写入的具体内容是什么。
具体写入内容为
ws1.cell(find_row,8).value='=%s*%s' % (ws1.cell(find_row,7), ws1.cell(find_row,5))
#find_row为通过关键词匹配找到的行 txxcat 发表于 2020-4-7 09:39
这是碰到了非法公式导致,你需要调试一下,看看写入的具体内容是什么。
只是想做个简单的乘法,不知道哪有问题,麻烦你帮看看这个公式有错误吗 本帖最后由 txxcat 于 2020-4-7 16:01 编辑
g5698191 发表于 2020-4-7 12:04
只是想做个简单的乘法,不知道哪有问题,麻烦你帮看看这个公式有错误吗
忘了需要把column和row转换成excel的表达方式,就是'B7'、'C10'一类的,通过get_column_letter可以把column值转成对于的字母,然后把row值转换成字符拼接起来就可以了,参考下面代码:
from openpyxl.utils import get_column_letter
ws1.cell(find_row,8).value='=%s*%s' %(get_column_letter(7)+str(find_row),get_column_letter(5)+str(find_row)) txxcat 发表于 2020-4-7 15:58
忘了需要把column和row转换成excel的表达方式,就是'B7'、'C10'一类的,通过get_column_letter可以把colu ...
可以了,谢谢!
页:
[1]