簡體   English   中英

Python - 將工作表從多個工作簿復制到一個工作簿

[英]Python - Copy sheet from multiple workbooks to one workbook

這是我的過程:

第 1 步:打開 File1
步驟 2:加載 Sheet1
步驟 3:加載輸出文件
第 4 步:在 OutputFile 中創建一個新工作表
第 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 工作表。 我在這個循環之前加載這個文件。

另外,我希望復制單元格的內容。 如果源表有任何公式,我不希望它被復制。 如果單元格 A5 中有一個值 500,我希望該值位於輸出表中的單元格 A5 中。

也許我以錯誤的方式接近這個。 任何幫助表示贊賞。

openpyxl 是處理 excel 文件最慢的模塊。 您可以嘗試使用 xlwings 來執行此操作,或者如果您可以使用任何 excel 加載項,這里是您可以更喜歡使用它的 RDB Merge ,它相對較快並且確實有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM