繁体   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