繁体   English   中英

如何通过 openpyxl 将多个 xlsx 文件合并为一个具有不同工作表的 xlsx 文件

[英]How to merge multiple xlsx files into one single xlsx file with Different sheets by openpyxl

我想创建一个master_xlsx文件,其中包含许多较小的xlsx文件。

我有 xlsx 文件:

  • users_general_inf.xlsx 在此处输入图像描述
  • users_dates_inf.xlsx 在此处输入图像描述
  • 用户控制信息.xlsx 在此处输入图像描述

我希望master_xlsx以这样一种方式包含所有文件,即一个xlsx文件是一张sheet ,其sheet_name和文件中的data被保留在此处输入图像描述

我的代码:

import openpyxl

# --- Creating the master excel
# ------ create the master excel workbook
wb_master = openpyxl.Workbook()
# ------ create the master excel worksheet
wb_master_sheet = wb_master.active
# ------ import .xlsx files
# --------- users_general_inf.xlsx
wb_01 = openpyxl.load_workbook('./tmp/users_general_inf.xlsx')
wb_01_sheet = wb_01['users_general_inf']
# --------- users_dates_inf.xlsx
wb_02 = openpyxl.load_workbook('./tmp/users_dates_inf.xlsx')
wb_02_sheet = wb_02['users_dates']
# --------- users_controls_inf.xlsx
wb_03 = openpyxl.load_workbook('./tmp/users_controls_inf.xlsx')
wb_03_sheet = wb_03['userAccountControl']


xlsx_files = [wb_01, wb_02, wb_03] # all xlsx files to be merged


for f in xlsx_files:
    ? - universal code independent of the number of xlsx files

# ------ saving the master excel workbook
wb_master.save('./reports/master_users_inf.xlsx')

由于我刚刚学习 PYTHON,我将感谢与该项目相关的任何帮助。

你很接近,你只需要实现(在你的for循环中) create_sheet在主文件中创建一个新工作表,然后使用iter_rows从所有行中获取所有值。

这是一个提议(没有你的评论来制作一个简短的代码):

from openpyxl import load_workbook, Workbook

wb_master = Workbook()

xlsx_files = ['./tmp/users_general_inf.xlsx',
              './tmp/users_dates_inf.xlsx',
              './tmp/users_controls_inf.xlsx']

for f in xlsx_files:
    sub_wb = load_workbook(f)
    sub_ws = sub_wb.active
    
    wb_master_sheet = wb_master.create_sheet(sub_ws.title)
    
    for row in sub_ws.iter_rows():
        for cell in row:
            wb_master_sheet[cell.coordinate].value = cell.value
    
   #wb_master_sheet.column_dimensions["A"].width = 20 #uncomment this line to set a width    

wb_master.remove_sheet("Sheet") #or del wb_master["Sheet"] 
wb_master.save('./reports/master_users_inf.xlsx')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM