# -*- 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()
2,合并Excel
最新推荐文章于 2022-07-13 20:47:26 发布