Python利用openpyxl合并多个Excel工作簿或多个工作表

针对合并多个Excel工作簿或多个工作簿,我们可以使用os,openpyxl库进行实现。

其中list_sh = old_sh.iter_rows(values_only=True)中values_only可以选择True,直接导出单元格的value值
import os
import openpyxl

path_ = input("请输入需要合并Excel文件的文件夹路径:")

wb_new = openpyxl.Workbook()
sheets = wb_new.active
sheets.title = '合并数据'

if os.path.isfile(path_):
    cell_bg = int(input('请输入Excel表头的行数:'))
    path_2 = input('请输入保存的路径:')
    sh_name_2 = input('请输入保存的名称:')
    wb_old = openpyxl.load_workbook(path_)
    sh_old_list = wb_old.sheetnames

    for sh in sh_old_list:
        old_sh = wb_old[sh]
        print(old_sh)
        if sheets.max_row == 1:
            list_sh = old_sh.iter_rows(values_only=True)  # iter_rows()中values_only=True表示返回单元格的值,false 表示返回生成器
        else:
            list_sh = old_sh.iter_rows(min_row=cell_bg + 1, values_only=True)

        # list_sh=[[],[],[]]
        for i in list_sh:
            sheets.append(i)
    if sh_name_2 == '':
        sh_name_2 = '合并数据'
    if path_2 == '':
        path_2 = path_.rsplit('\\', 1)[0]
    wb_new.save(path_2 + '\\' +'{}.xlsx'.format(sh_name_2))
else:
    sh_name = input('请输入需要合并的工作表名称:')
    cell_bg = int(input('请输入Excel表头的行数:'))
    path_2 = input('请输入保存的路径:')
    sh_name_2 = input('请输入保存的名称:')
    # 获取文件夹中的文件名称
    list_ex = os.listdir(path_)
    for ls in list_ex:
        print('正在合并{}'.format(ls))
        wb_old = openpyxl.load_workbook(path_ + '\\' + ls)
        old_sh = wb_old[sh_name]

        # 判断当前工作表是否为第一个工作表,若不是则从表头后的下一行开始
        if sheets.max_row == 1:
            list_sh = old_sh.iter_rows(values_only=True)  # iter_rows()中values_only=True表示返回单元格的值,false 表示返回生成器
        else:
            list_sh = old_sh.iter_rows(min_row=cell_bg + 1, values_only=True)

        # list_sh=[[],[],[]]
        for i in list_sh:
            sheets.append(i)

    if path_2 == '':
        path_2 = path_
    if sh_name_2 == '':
        sh_name_2 = '合并数据'
    wb_new.save(path_2 + '\\' + '{}.xlsx'.format(sh_name_2))
print('合并完成.....')
stop_ = input('输入任意键值关闭窗口........')

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值