编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Excel多个sheet页合并成一个sheet(免费)

wxchong 2024-07-22 22:31:54 开源技术 13 ℃ 0 评论

大家好,我们有时候经常会遇到需要将Excel表的多个sheet页合并成一个sheet的情况,并且有些人需要保留每个sheet页的表头,有些人不要表头,因此,我写了一个脚本,可以解决多个sheet合并成一个sheet的代码程序,可以自己调整是否需要表头(title的值),极大的方便了我们大多数朋友的需求。

这里主要用到的是python的两个库,一个是自带的os,另一个是openpyxl操作Excel的库,安装pip install openpyxl。话不多说,上代码。

# -*- coding: UTF-8 -*-
#导入所需模块
import os
from openpyxl import Workbook
from openpyxl import load_workbook

cwd = os.getcwd()
excel_name = cwd+'\\test01.xlsx'  #需要汇总的表格地址+表格名
wb = load_workbook(excel_name)
# 获取workbook中所有的表格
sheets = wb.sheetnames
print("需要汇总的excel中所有sheet页名称为:", sheets)

#创建一个汇总excel文件
huizong_path = cwd+"\\汇总.xlsx"
huizong_sheet = "汇总结果"
wb_new = Workbook()#实例化创建一个Excel表,其中默认的sheet页名为“sheet”
ws_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]]
for i in range(ws.max_row):
    for j in range(ws.max_column):
        sheet1.cell(i+1, j + 1).value = ws.cell(i+1, j + 1).value
wb1.save(huizong_path)

#第二个sheet页数据复制到汇总excel表
def tongji():
    for x in range(1, len(sheets)):
        wb1 = load_workbook(huizong_path)
        sheet1 = wb1[huizong_sheet]
        m = sheet1.max_row + 1
        sheet = wb[sheets[x]]
        for i in range(sheet.max_row):
            for j in range(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页的第一行表头
if title == 0:#第二个sheet页开始,不保留第一行表头
    sheet_title = title+1
    tongji()
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("未设置保存三行以上表头,如有需要请联系作者,谢谢")

有任何问题可以评论留言,如有想看的操作讲解,可以私信我。谢谢大家的点赞、关注和转发。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表