首页 > 解决方案 > 在 openpyxl 中使用 Translator 复制公式

问题描述

我需要将公式从以编程方式确定的列复制到相邻列,并且需要将公式单元格引用与列一起“移动”。例如,在单元格 E2 中是公式='Copy ATDs'!B60,我需要将公式复制到单元格 F2='Copy ATDs'!C60 文档中的示例如下(原文如此):

>>> from openpyxl.formula.translate import Translator
>>> ws['F2'] = "=SUM(B2:E2)"
>>> # move the formula one colum to the right
>>> formula = Translator("=SUM(B2:E2)", "G2")
'=SUM(C2:F2)'

我理解这意味着如果将第二个参数移动一列,则 Translator 函数将返回一个由一列转置的公式。

我正在使用的代码如下:

new_cell_ref = ws_dt.cell(column=source_col, row=r).offset(row=0, column=1).address()
ws_dt.cell(column=new_col, row=r).value = \
    Translator(ws_dt.cell(column=source_col, row=r).value, \ 
               new_cell_ref.column + str(new_cell_ref.row)).tokenizer.formula

Translator 函数似乎并不关心第二个参数是什么。它始终返回原始公式而不翻译任何内容。请帮助我理解我做错了什么。

标签: pythonexcelformulaopenpyxl

解决方案


推荐阅读