Проблема с кодом, объединяющим файлы Excel с использованием Python - PullRequest
1 голос
/ 24 марта 2020

У меня есть большое количество файлов Excel в папке на моем компьютере, скажем, 100. Каждый из файлов Excel содержит один лист. Я хочу объединить все файлы Excel в один файл на 100 листов. У меня есть код ниже, который работает, но у меня есть несколько основных проблем с ним. Вот код:

import os
import xlwings as xw

Path = r"C:\Folder"

mainfile = xw.Book()

for filename in os.listdir(Path):
    if filename.endswith(".xlsx") or filename.endswith(".xlsm"):
        wb = xw.books.open(os.path.join(Path, filename))
        ws = wb.sheets(1)
        ws.api.Copy(Before = mainfile.sheets(1).api)
        continue
    else:
        continue

mainfile.save(r"C:\Folder\mainfile.xlsx")
mainfile.app.quit()

Вот вопросы, с которыми я надеялся получить помощь:

1) Этот код работает, когда у меня небольшое количество небольших файлов Excel , но он не будет работать с большим количеством больших файлов. Причина в том, что код буквально открывает каждый файл, затем объединяет их, а затем закрывает их все. Есть ли способ избежать этого (он становится слишком медленным, так как некоторые файлы имеют размер 80 МБ)? По сути, можно ли сделать так, чтобы файлы объединялись без фактического открытия в Excel?

2) Как добавить к этому фрагмент кода, чтобы проверить, существует ли уже «mainfile.xlsx», и удалить его, если он уже существует, перед запуском остальной части кода и повторным созданием нового файла с именем "mainfile.xlsx"?

Я открыт для предложений, если есть лучший способ сделать это с чем-то, кроме xlwings. Я попробовал win32.client, но через некоторое время он перестает работать и больше не будет работать, пока я не перезагружу свой компьютер. Мне тоже не очень повезло с openpyxl.

...