Concat、Concatenate、TextJoin、所有 return '#NAME?'
Concat,Concatenate,TextJoin, all return '#NAME?'
所以我有这个简单的代码,可以将公式插入到单元格中:
wb = Workbook()
ws = wb.create_sheet('General')
ws['A1'].value = 'Hello'
ws['B1'].value = 'World'
#Now cell C1 should display 'Hello World'
ws['C1'].value = "=CONCAT(A1,B1)"
#ws['C1'].value = "=CONCATENATE(A1,B1)"
#ws['C1'].value = "=TEXTJOIN(,,A1,B1)"
wb.save('Test.xlsx')
我在 Excel 中手动输入了公式并且它们有效,但是当通过 openpyxl 分配时它们 return #NAME?
单元格C1中的公式检查出来,如果我select单元格并按回车键或双击它然后单击外部,则显示正确的结果;
我也尝试过但仍然没有运气:
ws['C1'].set_explicit_value("=CONCAT(A1,B1)","f")
.Value
属性 显式设置 Range 的 well... 值
如果您打算使用公式,您应该使用 .Formula
属性 代替:
ws['C1'].Formula = "=CONCAT(A1,B1)"
应该会产生预期的结果。感觉它的原因是不言自明的。
编辑:
请注意,这将产生预期的结果“HelloWorld
”,但您似乎希望结果为“Hello World
”。
要实现上述结果,请改用此公式:
ws['C1'].Formula = "=CONCAT(A1, " ", B1)
最后但同样重要的是,@tigeravatar 在评论中正确提到,在旧的 Excel 版本中使用公式 =CONCATENATE()
相反!
问题在于 OOXML 规范仅涵盖原始版本中的公式,而不涵盖 Microsoft 在后续版本中添加的公式。
您可以轻松检查公式是否正确:
from openpyxl.utils.formulas import FORMULAE
'CONCAT' in FORMULAE
False
'CONCATENATE' in FORMULAE
True
'TEXTJOIN' in FORMULAE
False
为了使用更新的公式,这些公式必须以 '_xlfn.'
为前缀。如果仍然存在问题,则需要查看相关文件的 XML 来源。
所以我有这个简单的代码,可以将公式插入到单元格中:
wb = Workbook()
ws = wb.create_sheet('General')
ws['A1'].value = 'Hello'
ws['B1'].value = 'World'
#Now cell C1 should display 'Hello World'
ws['C1'].value = "=CONCAT(A1,B1)"
#ws['C1'].value = "=CONCATENATE(A1,B1)"
#ws['C1'].value = "=TEXTJOIN(,,A1,B1)"
wb.save('Test.xlsx')
我在 Excel 中手动输入了公式并且它们有效,但是当通过 openpyxl 分配时它们 return #NAME?
单元格C1中的公式检查出来,如果我select单元格并按回车键或双击它然后单击外部,则显示正确的结果; 我也尝试过但仍然没有运气:
ws['C1'].set_explicit_value("=CONCAT(A1,B1)","f")
.Value
属性 显式设置 Range 的 well... 值
如果您打算使用公式,您应该使用 .Formula
属性 代替:
ws['C1'].Formula = "=CONCAT(A1,B1)"
应该会产生预期的结果。感觉它的原因是不言自明的。
编辑:
请注意,这将产生预期的结果“HelloWorld
”,但您似乎希望结果为“Hello World
”。
要实现上述结果,请改用此公式:
ws['C1'].Formula = "=CONCAT(A1, " ", B1)
最后但同样重要的是,@tigeravatar 在评论中正确提到,在旧的 Excel 版本中使用公式 =CONCATENATE()
相反!
问题在于 OOXML 规范仅涵盖原始版本中的公式,而不涵盖 Microsoft 在后续版本中添加的公式。
您可以轻松检查公式是否正确:
from openpyxl.utils.formulas import FORMULAE
'CONCAT' in FORMULAE
False
'CONCATENATE' in FORMULAE
True
'TEXTJOIN' in FORMULAE
False
为了使用更新的公式,这些公式必须以 '_xlfn.'
为前缀。如果仍然存在问题,则需要查看相关文件的 XML 来源。