使用openpyxl中的翻译器复制公式

问题描述 投票:0回答:1

我需要将公式从以编程方式确定的列复制到相邻列,并且需要公式单元格引用随该列“移动”。例如,单元格 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)'

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

我使用的代码如下:

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

python excel formula openpyxl
1个回答
0
投票

文档有点不透明,但是您可以使用 Translator 类来设置公式当前所在的位置,然后使用 translate_formula 方法来实际翻译它

翻译器(公式,当前单元格).translate_formula(目标单元格)==公式翻译

Translator('=A1+B1', 'C1').translate_formula('C2') == '=A2+B2'

然后将该新公式分配给单元格值。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.