Ваша проблема в том, что используемые вами библиотеки работают с файлами Excel , и это не совсем то же самое, что работа в программе Excel .Программа Excel делает довольно много вещей автоматически, которые не выполняются openpyxl или xlrd.
Например, одна вещь, которую вы должны знать о файлах Excel, - это то, что формулы и их результаты - это две совершенно разные вещи.Они хранятся отдельно и читаются независимо.В openpyxl, если вы пишете формулу в ячейку, то в этой ячейке only хранится формула.Он не (и не может) вычислить результат формулы.
Аналогично, когда приходит время читать ячейку, openpyxl либо даст вам формулу или результат, но не оба (вам нужно выбрать, какой вы хотите; по умолчанию вы получите формулу, если она есть).xlrd даст вам только результат.И я не могу не подчеркнуть: в вашем случае нет результата для чтения , потому что он просто не был рассчитан.Так что даже если вы скажете openpyxl дать вам результат вместо формулы, это вам не поможет.
В отличие от этого, программа Excel (по умолчанию) всегда пересчитывает формулы, исохраняет обе формулы и их результаты одновременно, синхронизируя их.Это не относится к используемым вами библиотекам.
Сообщение об ошибке, которое вы показали, - это то, что вы получаете, когда пытаетесь преобразовать '=SUM(G4:G35)'
в целое число.Обратите внимание, что функция Python int
не знает, что такое Excel, что такое ячейки или какие формулы.Он пытается преобразовать знак равенства, заглавную букву «S», заглавную букву «U», заглавную букву «M», левую часть, заглавную букву «G», цифру 4, двоеточие, другую заглавную букву «G»,цифры 3 и 5, и правая часть в целое число.Python говорит вам, что он не может иметь смысл этого как целое число.
Ваши основные варианты, если вы хотите продолжать делать это с Python: (1) вычислить сумму самостоятельно, в Python, и использовать это;или (2) использовать другую библиотеку, такую как xlwings , которая будет работать с программой Excel , а не с необработанными файлами.