Python - копирование листа из нескольких рабочих книг в одну рабочую книгу - PullRequest
0 голосов
/ 10 марта 2020

Вот мой процесс:

Шаг 1: Открыть файл1
Шаг 2: Загрузить лист1
Шаг 3: Загрузить файл вывода
Шаг 4: Создать новый лист в файле вывода
Шаг 5: Скопируйте содержимое ячейку за ячейкой из шага 2, чтобы вставить лист, созданный на шаге 4
Шаг 6: Повторите процесс 'n' количество раз

Я создал сценарий Python для добиться этого, но программа безумно медленно. Займет час, чтобы закончить. Вот фрагмент кода, который выполняет копирование.

import xlsxwriter as xlsx
import openpyxl as xl

for i in range (6,k):
    #get the file location/name from source file
    filename = sheet.cell_value(i,3)
    #get the sheetname from the sheet read in the above statement
    sheetname = sheet.cell_value(i,4)
    #print the file name to verify
    print(filename)
    #get output sheet name
    outputsheetname = sheet.cell_value(i,5)

    #load the source workbook
    wb1 = xl.load_workbook(filename=filename,data_only = True)
    #get the index of sheet to be copied
    wb1_sheet_index = wb1.sheetnames.index(sheetname)
    #load the sheet
    ws1 = wb1.worksheets[wb1_sheet_index]

    #load the output workbook
    wb2 = xl.load_workbook(filename=output_loc)
    #create a new sheet in output workbook
    ws2 = wb2.create_sheet(outputsheetname)
    #print(ws2,":",outputsheetname)

    for row in ws1:
        for cell in row:
            ws2[cell.coordinate].value = cell.value

    wb2.save(output_loc)

wb2.save(output_loc)

Имя файла, имя листа и имя выходного листа взяты из мастер-листа Excel, где я храню расположение файла и имена листов. Я загружаю этот файл до этого l oop.

Кроме того, я хочу, чтобы содержимое ячейки было скопировано. Если исходный лист имеет какую-либо формулу, я не хочу, чтобы это было скопировано. И если в ячейке A5 есть значение 500, я хочу, чтобы это значение находилось в ячейке A5 на выходном листе.

Возможно, я подхожу к этому неправильно. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 10 марта 2020

openpyxl - самый медленный модуль для работы с файлом Excel. вы можете попробовать сделать это с xlwings или, если вы можете использовать любую надстройку Excel , вот RDB Merge , который вы можете предпочесть, он сравнительно быстр и работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...