Есть несколько возможных путей прохождения через это, в зависимости от ресурсов, которые вы решите использовать.
Вы не упомянули, хотите ли вы скопировать значения, формулы или и то, и другое. Я предполагаю только значения.
Если вы можете сделать копию, пока рабочая книга закрыта, возможно, pyopenxl или xlrd и xlwrt могли бы сделать это. Оба из них могут копировать значения и формулы, но ни одно из этих решений не может оценить формулы, но это звучит нормально из вашего описания.
Если вам нужно, чтобы рабочая книга была открыта во время копирования или перемещения, есть некоторые отличные решения, которые объединяют Python и Excel, используя COM. xlwings , PyXll , FlyingKoala и DataNitro. С помощью этих решений вы можете написать некоторый код Python, который делает копию. Если вам просто нужны значения, вы можете использовать кадры данных для перемещения данных.
Я использовал только xlwings (и [FlyingKoala] - который использует xlwings). xlwings упрощает двустороннюю связь между Python и Excel, поэтому вы можете звонить Python из Excel и вызывать Excel (включая VBA) из Python. Этот метод может быть полезен для ускорения операций, особенно в отчетах и моделировании.
PyXll и FlyingKoala имеют дополнительное преимущество, поскольку они могут читать формулы Excel и преобразовывать их в код Python, затем выполните (оцените) динамически сгенерированный код Python.
Пример использования xlwings только для копирования значений. Я использовал это для копирования 100 000 строк с 26 столбцами (от A до Z), и это заняло 17 секунд;
import xlwings as xw
import numpy as np
@xw.func
@xw.arg('range_to_copy', np.array, doc='')
@xw.ret(index=False, header=False, expand='table')
def copy_values(range_to_copy):
return range_to_copy