Openpyxl копирует только указанные c рабочие листы - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть рабочая тетрадь с 5 листами, которая называется AB C D E.

A - это очень большой лист, который мне не нужен все время.

Я хочу скопировать только последние 4 листа, BCDE, в другую рабочую книгу, потому что я хочу манипулировать данными в BCDE без больших данных на листе A.

Я делаю это с помощью скопировать файл с помощью shutil, загрузить рабочую книгу, а затем удалить лист, который я не хочу. Все работает нормально, но метод load_workbook занимает слишком много времени (~ 60 секунд только для загрузки).

Что я могу сделать, чтобы ускорить это? Я не могу сделать data_only, так как мне нужно форматирование, формулы и диаграммы в BCDE. Открыть для других методов копирования рабочих листов.

Код:

filename=r'small.xlsx'

shutil.copyfile(filename,filename.replace('.xlsx','_2.xlsx'))

ts=time.perf_counter()
workbook = openpyxl.load_workbook(filename.replace('.xlsx','_2.xlsx')) #this is taking very long.
print(time.perf_counter()-ts)

std = workbook['A']
workbook.remove(std)
workbook.save(filename.replace('.xlsx','_2.xlsx'))
...