当工作碰到需要将几个excel合并时,比如一个表,收集每个人的个人信息,陆续收回来就是十几张甚至几十张表,少了还好解决,但是很多的话就不能一个一个去复制了,这时候就想到了python,Python大法好啊。短短100行代码解决,无论几十张,几百张表,瞬间搞定。
首先需要安装两个模块:xlrd(读取excel),xlsxwriter(写入excel)
pip install xlrdpip install xlsxwriter
安装好以后,直接上代码。如下:
1 # -*- Coding: UTF-8 -*- 2 # filename : Merge_excel.py 3 # author by : Awrrays 4 5 import xlrd,xlsxwriter 6 7 # 打开表格 8 def openxls(file): 9 try:10 fx = xlrd.open_workbook(file)11 return fx12 except Exception as e:13 print(‘读取文件错误,错误为:{0}‘.format(e))14 15 # 获取所有sheet16 def getsheets(fx):17 return fx.sheets()18 19 # 获取某个sheet的行数20 def getrows(fx,sheet_num):21 table = fx.sheets()[sheet_num]22 rows = table.nrows23 return rows24 25 # 获取某个文件的内容并返回所有行的内容26 def getdump(fl,sheet_num):27 fx = openxls(fl)28 table = fx.sheet_by_name(sheet_name[sheet_num])29 row_num = getrows(fx,sheet_num)30 row_len = len(rows)31 for row in range(0,row_num):32 data = table.row_values(row)33 rows.append(data)34 dump.append(rows[row_len:])35 return dump36 # 定义要合并的所有文件37 allxls = ["E:/test/test1.xlsx",‘E:/test/test2.xlsx‘,‘E:/test/test3.xlsx‘]38 # 定义合并后的文件39 endxls = "E:/test/test.xlsx"40 41 # 存储一个sheet的结果42 sheet_value = []43 # 存储各sheet的名称44 sheet_name = []45 # 存储一行内容46 rows = []47 # 存储所有读取的结果48 dump = []49 50 # 读取第一个待读文件,获取sheet数51 fx = openxls(allxls[0])52 sheets = getsheets(fx)53 x = 054 for sheet in sheets:55 sheet_name.append(sheet.name)56 sheet_value.append([])57 x += 158 59 # 依次读取各sheet的内容60 for sheet_num in range(0,x):61 # 依次获取每个文件当前sheet的内容62 for fl in allxls:63 print(‘正在读取文件{0}的第{1}个标签....‘.format(fl,sheet_num))64 dump = getdump(fl,sheet_num)65 sheet_value[sheet_num].append(dump)66 67 file_num = len(allxls)68 endvlue = []69 70 # 获取各sheet的内容71 def get_sheet_value(k):72 for z in range(k,k+file_num):73 endvlue.append(sheet_value[0][0][z])74 return endvlue75 76 # 打开合并完成后的文件77 wb = xlsxwriter.Workbook(endxls)78 # 创建一个工作表79 ws = wb.add_worksheet()80 polit = 081 line_num = 082 # 依次遍历每个sheet中的内容83 for s in range(0,x * file_num,file_num):84 file_value = get_sheet_value(s)85 table_value = file_value[polit:]86 # 将每一个sheet中的内容写入新文件87 for a in range(0,len(table_value)):88 # 将sheet行写入到新文件89 for b in range(0,len(table_value[0])):90 # 将每一行的内容写入新文件91 for c in range(0,len(table_value[0][0])):92 data = table_value[a][b][c]93 ws.write(line_num,c,data)94 line_num += 195 # 设置分隔点96 polit = len(file_value)97 wb.close()
ok,最后结果:
总结以上是内存溢出为你收集整理的使用python合并excel全部内容,希望文章能够帮你解决使用python合并excel所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)