写点什么

针对不同场景的 Python 合并多个 Excel 方法

发布于: 1 小时前


大家好,我是辰哥~


在辰哥看来,技术能够减少繁琐工作带来的枯燥,技术+实际=方便。最近辰哥也是在弄 excel 文件的时候发现手动去整理有点繁琐枯燥,想着技术可以代替我去处理这部分繁琐的工作那何乐而不为呢~~~


三种场景

  1. 多个同字段的 excel 文件合并成一个 excel

  2. 多个不同字段的 excel 文件拼接成一个 excel

  3. 一个 excel 的多个 sheet 合并成一个 sheet


辰哥目前想到的仅是辰哥遇到的这三种情况(如果还有很多其他情况的,欢迎在下方留言,因为辰哥日常非经常涉及多种 excel 处理的内容,所以想不到其他情况)

01 合并多个同字段的 excel

这里辰哥先新建三个 excel 文件:11.xlsx;12.xlsx;13.xlsx;并往里填充数据,数据如下:


11.xlsx



12.xlsx



13.xlsx



需求:将这三个 excel 文件合并到一个 excel 中。


导入库


# 读取模块import xlrd# 写入模块import xlwt
复制代码


这里需要用到两个库:xlrd 读取 excel; xlwt 写入到合并的 excel;


# 文件列表xlxs_list = ["1/11.xlsx","1/12.xlsx","1/13.xlsx"]# 创建合并后的文件workbook = xlwt.Workbook(encoding='ascii')worksheet = workbook.add_sheet('Sheet1')
复制代码


定义合并哪些 excel 文件,以及合并后的 excel


# 行数count = 0#表头(只写入第一个xlsx的表头)bt = 0for name in xlxs_list:    wb = xlrd.open_workbook(name)    #按工作簿定位工作表    sh = wb.sheet_by_name('Sheet1')    #遍历excel,打印所有数据    if count>1:        bt=1    for i in range(bt,sh.nrows):        k = sh.row_values(i)        # 遍历每一行中的每一列        for j in range(0,len(k)):            worksheet.write(count,j, label=str(k[j]))        count = count +1workbook.save('1/合并1_辰哥.xlsx')
复制代码


最后合并到:**合并 1_辰哥.xlsx  **中,其结果如下:


02 拼接多个不同字段的 excel

新建三个 excel 文件:21.xlsx;22.xlsx;23.xlsx;并往里填充数据


21.xlsx



22.xlsx



23.xlsx



将这三个 excel 文件拼接带一个 excel 中(从左往右)


# 列数col = 0for name in xlxs_list:    wb = xlrd.open_workbook(name)    #按工作簿定位工作表    sh = wb.sheet_by_name('Sheet1')    #遍历excel,打印所有数据    for i in range(0,sh.nrows):        k = sh.row_values(i)        # 遍历每一行中的每一列        for j in range(0,len(k)):            worksheet.write(i,col+j, label=str(k[j]))    col = col +len(k)workbook.save('2/合并2_辰哥.xlsx')
复制代码


最后合并到:**合并 2_辰哥.xlsx  **中,其结果如下:


03 合并一个 excel 的多个 sheet

新建一个 excel 文件:31.xlsx;并新增 sheet1、sheet2、sheet3,往里填充数据


sheet1



sheet2



sheet3



将同一个 excel 文件中的这三个 sheet 并到一个 sheet 中。


sheet_list = ['Sheet1','Sheet2','Sheet3']# 行数count = 0# 表头(只写入第一个xlsx的表头)bt = 0for st in sheet_list:    #按工作簿定位工作表    sh = wb.sheet_by_name(st)    #遍历excel,打印所有数据    if count > 1:        bt = 1    for i in range(bt, sh.nrows):        k = sh.row_values(i)        # 遍历每一行中的每一列        for j in range(0, len(k)):            worksheet.write(count, j, label=str(k[j]))        count = count + 1workbook.save('3/合并3_辰哥.xlsx')
复制代码


最后合并到:合并 3_辰哥.xlsx 中,其结果如下:


04 小结

目前想到的仅是辰哥遇到的这三种情况(如果还有很多其他情况的,欢迎在下方留言,因为辰哥日常并非经常涉及多种 excel 处理的内容,所以想不到其他情况)

发布于: 1 小时前阅读数: 6
用户头像

个人公众号:Python研究者 2021.04.26 加入

教你如何学Python,专注于Python入门与进阶、爬虫、数据分析挖掘、数据可视化。分享Python相关的技术文章、工具资源、视频教程、学习资料。

评论

发布
暂无评论
针对不同场景的Python合并多个Excel方法