大家好,我们有时候经常会遇到需要将Excel表的多个sheet页合并成一个sheet的情况,并且有些人需要保留每个sheet页的表头,有些人不要表头,因此,我写了一个脚本,可以解决多个sheet合并成一个sheet的代码程序,可以自己调整是否需要表头(title的值),极大的方便了我们大多数朋友的需求。
这里主要用到的是python的两个库,一个是自带的os,另一个是openpyxl操作Excel的库,安装pip install openpyxl。话不多说,上代码。
-*- coding: UTF-8-*-导入所需模块importosfrom openpyxlimportWorkbookfrom openpyxlimportload_workbookcwd = os.getcwd()excel_name = cwd+test01.xlsx需要汇总的表格地址+表格名wb = load_workbook(excel_name) 获取workbook中所有的表格sheets = wb.sheetnamesprint("需要汇总的excel中所有sheet页名称为:", sheets)创建一个汇总excel文件huizong_path = cwd+"汇总.xlsx"huizong_sheet ="汇总结果"wb_new = Workbook()实例化创建一个Excel表,其中默认的sheet页名为sheetws_new = wb_new.create_sheet(huizong_sheet,0)加上0使得,创建的汇总结果sheet页放在最开始位置wb_new.save(huizong_path)汇总每个sheet页需要表头几行,如:0表示只需要第一个sheet页表头,其他不需要;1表示需要每个sheet页的第一行表头提取sheet页第一页所有数据wb1 = load_workbook(huizong_path)sheet1 = wb1[huizong_sheet]ws = wb[sheets[0]]fori inrange(ws.max_row):forj inrange(ws.max_column): sheet1.cell(i+1, j +1).value = ws.cell(i+1, j +1).valuewb1.save(huizong_path)第二个sheet页数据复制到汇总excel表def tongji():forx inrange(1,len(sheets)): wb1 = load_workbook(huizong_path) sheet1 = wb1[huizong_sheet] m = sheet1.max_row +1sheet = wb[sheets[x]]fori inrange(sheet.max_row):forj inrange(sheet.max_column): sheet1.cell(m + i, j +1).value = sheet.cell(sheet_title + i +1, j +1).value wb1.save(huizong_path)print("第"+ str(x +1) +个sheet页表格数据保存成功!)title =0如:0表示只需要第一个sheet页表头,其他不需要;1表示需要每个sheet页的第一行表头iftitle ==0:第二个sheet页开始,不保留第一行表头 sheet_title = title+1tongji()elif title ==1: sheet_title = title第二个sheet页开始,保留第一行表头 tongji()elif title ==2: sheet_title = title -1第二个sheet页开始,保留到第二行表头 tongji()elif title ==3: sheet_title = title -2第二个sheet页开始,保留到第三行表头 tongji()else:print("未设置保存三行以上表头,如有需要请联系作者,谢谢")
有任何问题可以评论留言,如有想看的操作讲解,可以私信我。谢谢大家的点赞、关注和转发。