Использование Translator в openpyxl для копирования формул - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно скопировать формулу из столбца, определенного программным способом, в соседний столбец, и мне нужна ссылка на ячейку формулы для перемещения столбца.Например, в ячейке E2 есть формула ='Copy ATDs'!B60, и мне нужно скопировать формулу в ячейку F2 как ='Copy ATDs'!C60 Пример в документации выглядит следующим образом (sic):

>>> 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 не заботится о втором аргументе.Он последовательно возвращает исходную формулу, не переводя ничего.Пожалуйста, помогите мне понять, что я делаю неправильно.

...