#python #excel #pandas #performance #openpyxl
Вопрос:
В настоящее время я использую openpyxl для записи в уже существующий файл excel. Я знаю, что это не самая эффективная библиотека для этой цели, но проблема, с которой я сталкиваюсь, заключается в другом, я полагаю.
Когда я добавляю определенный фрейм данных в существующую электронную таблицу Excel, в то время как весь файл excel не содержит никаких формул (excel -), для завершения записи в файл требуется менее секунды.
Однако, если я использую точно такой же код для записи в файл excel аналогичного размера, содержащий несколько вкладок с вычисляемыми ячейками, его завершение легко займет более 10 минут.
Есть какие-нибудь идеи, как ускорить процесс написания в этом случае? Я думаю, это занимает так много времени, потому что все вычисленные ячейки пересчитываются много раз, может быть, это можно как — то предотвратить…
отрывок кода, который я использую (хотя не думаю, что это имеет значение):
book = load_workbook(file_name)
writer = pd.ExcelWriter(file_name, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, sheet_name=sheet_name, index=False)
writer.save()
Комментарии:
1. Возможно, я ошибаюсь, но я не думал, что openpyxl когда-либо запускает приложение Excel: оно просто копирует формат файла. Следовательно, я не уверен, что на самом деле происходит какой-либо расчет? Возможно, вы добавляете строки или столбцы, которые требуют, чтобы механизм изменял ссылки в формуле, чтобы сохранить целостность книги?
2. @DS_London спасибо за ответ. К сожалению, это даже занимает так много времени, когда я добавляю в файл новую электронную таблицу (которая не должна иметь никакого отношения к остальной части файла).
3. Openpyxl никогда ничего не делает с формулами, так что это не может быть причиной каких-либо проблем с производительностью.
4. @CharlieClark есть какие-либо предложения по повышению производительности в любом случае?
5. Не без файлов, нет.