Python openpyxl如果带引用的条件公式失败
使用Python2.7和openpyxl,我将一个IF公式插入excel工作表中,该工作表引用了其他工作表中的字段 当其他公式(CONTIF、COUTN、SUM等)起作用时,如果这个公式不起作用,我就找不到这个“简单”的原因。除非问题出在哪里 这是我的密码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
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)