#python #openpyxl
Вопрос:
У меня есть данные с веб-сайта, которые записываются в excel при каждом запуске программы. Мне нужна формула в нескольких столбцах, использующая данные в определенных ячейках. Ниже приведен мой код, и я вручную добавил значения в ячейки для этого примера. Мне нужны формулы в столбце B, столбце D и столбце F. Столбец B должен быть суммой A2-A1, Столбец D должен быть суммой C2-C1, Столбец F должен быть суммой B1/D1
После написания строки мне нужно выполнить формулы для всех строк в столбцах B , D, F. Как я могу вставить формулу с помощью python? Может кто-нибудь помочь.
from openpyxl import load_workbook path = r"C:/folder/file.xlsx" wb = load_workbook(path) sheet = wb[sheet_name] row = sheet.max_row 1 sheet.cell(row=row, column=1, value="10") # =gt; column A sheet.cell(row=row, column=2, value="20") # =gt; column C sheet.cell(row=row, column=3, value="100") # =gt; column E
Комментарии:
1. Чтобы вставить формулу, вы можете использовать что-то вроде этого
value="=A2-A1"
2. У меня есть 100 строк, как я могу сделать для всех строк?
Ответ №1:
from openpyxl import load_workbook path = r"c:/Temp/file.xlsx" wb = load_workbook(path) sheet_name = "Sheet1" sheet = wb[sheet_name] for row in range(1, 101): # loop over 100 first rows sheet.cell(row=row, column=1, value=10) # =gt; column A sheet.cell(row=row, column=3, value=20) # =gt; column C sheet.cell(row=row, column=5, value=100) # =gt; column E # make the formulae # I did not understand the meaning of the formulas without sample data # and examples, so I tried to do it literally as it was written, # with correction for line offset sheet.cell(row=row 1, column=2, value=f'=SUM(A{row 1}-A{row})') sheet.cell(row=row 1, column=4, value=f'=SUM(C{row 1}-C{row})') sheet.cell(row=row 1, column=6, value=f'=IFERROR(SUM(B{row}/D{row}),"-")') wb.save(path) wb.close