Python xlwt无法解析“复杂”公式,引用到另一个工作表

0 投票
1 回答
1017 浏览
提问于 2025-04-18 00:35

我想在Excel的一个单元格里放一个公式:

write(
  rownr,
  colnr,
  xlwt.Formula("ROUND(SUM('Hungarian word'.G%d:'Hungarian word'!G%d);0)" % (intval[0], intval[1]))

(注意:这个“匈牙利词”是带有特殊字符的单词,所以工作表的名称是unicode格式)

当我运行这段代码时,出现了这个错误:

xlwt.ExcelFormulaParser.FormulaParseException: can't parse formula ROUND(SUM('Hungarian word'.G2:'Hungarian word'.G3);0)

我试着把“.”字符换成“!”,但还是出现同样的错误:

xlwt.ExcelFormulaParser.FormulaParseException: can't parse formula ROUND(SUM('Hungarian word'!G2:'Hungarian word'!G3);0)

如果我把公式作为字符串放到单元格里:

write(
  rownr,
  colnr,
  "=KEREK(SZUM('Hungarian word'.G%d:'Hungarian word'.G%d);0)" % (intval[0], intval[1]))

这样是可以的,但我担心这样只在正确的本地化版本的Excel中有效。

那么,怎样才能把另一个工作表中多个单元格的累积值四舍五入后放进去呢?

1 个回答

1

好的,这里是解决方案:

xlwt.Formula("ROUND(SUM('%s'!$G$%d:$G$%d);0)" % (u"Hungarian word", intval[0], intval[1])))

这个代码产生了我们预期的公式,

抱歉让你们听到这些杂音 :)

祝好。

撰写回答