2,合并Excel

# -*- coding:utf-8 -*-
import xlrd, xlsxwriter
allxls = [r'E:\python\111.xlsx',
        r'E:\python\222.xlsx']                          #设置要合并的所有文件,路径直接复制会出错
end_xls = r'E:\python\333.xlsx'                         #设置要合并到的文件

def open_xls(file):
    try:
        fh = xlrd.open_workbook(file)
        return fh
    except Exception as e:
        print("打开文件错误:" + e)                     # 异常处理


# 根据excel名以及第几个标签信息就可以得到具体标签的内容
def get_file_value(filename, sheetnum):
    rvalue = []                                         #存储一行结果
    fh = open_xls(filename)
    sheet = fh.sheets()[sheetnum]                       #获取sheet内容
    #lenrvalue = len(rvalue)
    row_num = sheet.nrows                               #获取行数
    for rownum in range(0, row_num):
        rvalue.append(sheet.row_values(rownum))         #这一行的内容,append表示调用一次添加一次,有叠加关系
   # filevalue.append(rvalue[lenrvalue:])               lenrvalue之前的值有重复的,从这里开始,读取了重复内容时加入20和24行试试
    return rvalue

first_file_fh = open_xls(allxls[0])
first_file_sheet = first_file_fh.sheets()
first_file_sheet_num = len(first_file_sheet)            #读取第一个待读文件,获取sheet数,循环才知道要循环多少次
sheet_name = []                                         #存储各sheet名
for sheetname in first_file_sheet:
    sheet_name.append(sheetname.name)                   #依次读取各sheet的名字

endxls = xlsxwriter.Workbook(end_xls)

all_sheet_value = []                                    #存储所有结果

# 把所有内容都放到列表all_sheet_value中
for sheet_num in range(0, first_file_sheet_num):
    all_sheet_value.append([])
    for file_name in allxls:
        print("正在读取" + file_name + "的第" + str(sheet_num + 1) + "个标签...")
        file_value = get_file_value(file_name, sheet_num)
        all_sheet_value[sheet_num].append(file_value)

# print(all_sheet_value)

num = -1
sheet_index = -1

# 将列表all_sheet_value的内容写入目标excel
for sheet in all_sheet_value:
    sheet_index += 1
    end_xls_sheet = endxls.add_worksheet(sheet_name[sheet_index])
    num += 1
    num1 = -1
    for sheet1 in sheet:
        for sheet2 in sheet1:
            num1 += 1
            num2 = -1
            for sheet3 in sheet2:
                num2 += 1
                # print(num,num1,num2,sheet3)
                # 在第num1行的第num2列写入sheet3的内容
                end_xls_sheet.write(num1, num2, sheet3)

endxls.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值