我一直在尝试将自动化写入我的Excel文件,除此之外还学习一些Python。我正在使用 openpyxl。当我想将公式从一个单元格扩展到多行和列中的另一个单元格时,我遇到了问题。
我尝试了很多可能性,多次重写代码,但仍然无法得到解决。 openpyxl 的文档非常差,不能回答我的问题。
我最近尝试过的一些事情:
ws1
是工作表的名称
for row in ws1.iter_cols(min_col= 4, min_row = 2, max_row = ws1.max_row, max_col = ws1.max_column):
formula = row[0].value
for cell in row:
cell = row[0]
cell_coordinate = cell.coordinate
str(cell_coordinate)
cell.value = Translator(formula,origin = cell_coordinate ).translate_formula()
我知道这可能是错误的,但我不知道如何修复它。
感谢帮助。
coordinate
作为 Translator
的原点。
你可以这样修复它:
from openpyxl import load_workbook
from openpyxl.formula.translate import Translator
wb = load_workbook("book.xlsx")
ws = wb.active # or wb["SheetName"]
SR, SC = 2, 4
d = {
"sum": ("=SUM(A2:C2)", "D2"),
"multiply": ("=PRODUCT(A2:C2)", "E2"),
"divide": ("=A2/B2/C2", "F2"),
"average": ("=AVERAGE(A2:C2)", "G2")
}
for col, agg in zip(ws.iter_cols(min_row=SR, min_col=SC), d):
for idx, cell in enumerate(col):
cell.value = Translator(
*d.get(agg)
).translate_formula(cell.coordinate)
wb.save("file.xlsx") # this is an inplace modification
输出(文件.xlsx):