Работа с эксель файлами через пайтон

Допустим есть эксель файл, в котором третья ячейка(C1) считает сумму первых двух ячеек (A1,B!). Формула задана изначально в третей ячейке (=A1+B1). Значения для первой и второй ячеек мы задаем при помощи кода на пайтон, затем извлекаем при помощи кода итоговое решение формулы т.е. (ячейку С1). Проблема в том, что пока я не открыл эксель и не сохранил его вручную (после манипуляций кодом) значения посчитанные формулой не выводятся ячейка выдает None. вот код задаёт значения в эксель:

from openpyxl import load_workbook 
 
#ввод входящих данных 
fn="Лист2.xlsx" 
wb=load_workbook(fn) 
ws=wb['page3'] 
  
ws['B2']=3333 
ws['B3']=4444 
 
wb.save(fn) 
wb.close()

вот код выводит значение заданой ячейки:

import openpyxl 
 
wb=openpyxl.reader.excel.load_workbook(filename="Лист2.xlsx", read_only=True,data_only=True) 
# help(openpyxl.reader.excel.load_workbook) 
print(wb.sheetnames) 
wb.active=2 
 
sheet=wb.active 
 
print(sheet['B2'].value) 
print(sheet['B3'].value) 
print(sheet['C2'].value) 
print(sheet['C3'].value)

По сути параметр data_only=True должен превращать формулу в посчитанное значение но выдаётся None потому что видимо библиотека openpyxl не может не открывая файл экселя самой программой посчитать эту формулу, только когда я вручную сохраняю, он выдает нормальные значения без None. Как решить данную проблему, уже всё перепробовал. Может быть есть библиотека в которой можно выполнить расчет формул экселя не открывая его или тому подобное? (В общем нужно чтобы эксель принимал значения для расчета формулы не открываясь считал их и выводил на консоль)


Ответы (2 шт):

Автор решения: Максим Красовский

Насколько я понял задачу. Я бы советовал либо сохранить файл сразу после расчётов, а потом сохранить в конце, либо всё считать в программе, а потом один раз записать в конце все данные. Не уверен, что применение "openpyxl.reader.excel" уместно, потому что заранее известно что и где находится (ячейки и данные). В экселе либо есть данные в ячейке, даже если это None, либо нет.

→ Ссылка
Автор решения: Sergei22322

Нашел решение, код позволяет открыть эксель файл и сохранить его, при этом автоматически посчитаются формулы с новыми значениями (если таковые были). Данный кусок кода нужно вставить после того как мы добавили новые значения в эксель по которым посчитается формула в яйчейках которые мы можем изъять впоследствии.

import xlwings
from openpyxl import load_workbook

excel_app = xlwings.App(visible=False)
excel_book = excel_app.books.open('Лист1.xlsx')
excel_book.save()
excel_book.close()
excel_app.quit()
→ Ссылка