Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python openpyxl如果带引用的条件公式失败_Python_Excel_Openpyxl - Fatal编程技术网

Python openpyxl如果带引用的条件公式失败

Python openpyxl如果带引用的条件公式失败,python,excel,openpyxl,Python,Excel,Openpyxl,使用Python2.7和openpyxl,我将一个IF公式插入excel工作表中,该工作表引用了其他工作表中的字段 当其他公式(CONTIF、COUTN、SUM等)起作用时,如果这个公式不起作用,我就找不到这个“简单”的原因。除非问题出在哪里 这是我的密码 for i in range(0,len(sortedWorkers)): for a, rr in enumerate(dates): row_nb = i + 3 coll

使用Python2.7和openpyxl,我将一个IF公式插入excel工作表中,该工作表引用了其他工作表中的字段

当其他公式(CONTIF、COUTN、SUM等)起作用时,如果这个公式不起作用,我就找不到这个“简单”的原因。除非问题出在哪里

这是我的密码

for i in range(0,len(sortedWorkers)):
        for a, rr in enumerate(dates):
            row_nb = i + 3
            coll = 3 + a
            clmn_letter = get_column_letter(coll + 3)
            # =IF(Worked!I$2=7;Worked!I3;"")
            valFormula = '=IF(Worked!%s$2=7;Worked!%s%s;"")' %(clmn_letter,clmn_letter, str(row_nb))
            _cl = ws12.cell(column= coll, row= row_nb, value=valFormula)
在注释中,您可以使用公式。格式正确。如果我手动将其插入excel,它也可以工作

还有字段坐标和所有匹配项

有什么建议吗?
谢谢

公式在XML中的序列化有时与在GUI中的序列化不同。它们可能有前缀,或者使用不同的单词,或者,我认为这里可能是这样,它们在参数之间使用不同的分隔符。在使用逗号作为小数分隔符的国家/地区,分号用于分隔GUI中的参数,但XML将使用逗号


您可以通过查看Excel创建的文件源来检查这一点。

因此,最后的问题是,如果必须使用公式逗号,“而不是分号”


注意:函数必须使用英文名称,函数参数必须用逗号分隔,不能用分号等标点符号分隔。

在公式中插入=IF语句时遇到同样的问题

如上所述,您只需要使用逗号作为分隔符,并且只需要在openpyxl中实现公式:

from openpyxl.utils import FORMULAE
print(FORMULAE)
此外,我发现使用IF的唯一方法是使用以下语法影响公式:

工作表[cell coords].value=“如果(条件、如果为真、如果为假)

例如(工作示例):


希望能有所帮助。

excel单元格中没有插入公式。我收到一个错误,excel修复或删除了不可读的内容。正如我所说,相同的公式被放入了其他表格中,并且一切正常。我将检查您的建议,这基本上就是我所说的,并在openpyxl文档中介绍的。
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
wb = Workbook()
dest_filename = 'empty_book.xlsx'
ws1 = wb.active
ws1["A1"].value='=IF(1=1,"True","False")'
wb.save(filename = dest_filename)