一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一起来看看吧!

二、项目目标

用Python实现多Excel、多Sheet的合并处理。

三、项目准备

软件:PyCharm

需要的库:pandas, xlrd,os

四、项目分析

1)如何选择要合并的Excel文件?

利用os,获取所有要合并的Excel文件。

2)如何选择要合并的Sheet?

利用xlrd库进行Excel读取,获取要合并的Sheet名。

3)如何合并?

利用pandas库,对所有Sheet名逐一循环打开,通过concat()进行数据追加合并即可。

4)如何保存文件?

利用to_excel保存数据,得到最终合并后的目标文件。

五、项目实现

1、第一步导入需要的库

import pandas as pd
import xlrd
import os

2、第二步选择要合并的Excel文件

#要合并文件路径path="D:/b/"#获取文件夹下所有EXCEL名xlsx_names = [x for x in os.listdir(path) if x.endswith(".xlsx")

3、第三步选择要合并的Sheet

# 获取第一个EXCEL名xlsx_names1 = xlsx_names[0]aa = path + xlsx_names1#打开第一个EXCELfirst_file_fh=xlrd.open_workbook(aa)# 获取SHEET名first_file_sheet=first_file_fh.sheets()

4、第四步对Sheet内容进行循环合并

#按SHEET名循环for sheet_name in sheet_names:df = None# 按EXCEL名循环for xlsx_name in xlsx_names:sheet_na = pd.ExcelFile(path + xlsx_name).sheet_namesif sheet_name in sheet_na:#print(sheet_name)_df = pd.read_excel(path + xlsx_name, sheet_name=sheet_name,header=None)if df is None:df = _dfelse:df = pd.concat([df, _df], ignore_index=True)else:continue

5、第五步保存合并后的文件

df.to_excel(excel_writer=writer, sheet_name=sheet_name, encoding="utf-8", index=False)print(sheet_name + "  保存成功!共%d个,第%d个。" % (len(sheet_names),num))num += 1writer.save()writer.close()

六、效果展示

1、处理前Excel数据:

2、运行进度提示:

3、合并后的结果:

七、总结

本文介绍了如何利用Python对多个Excel文件、多Sheet进行合并处理,减少了很多复制粘贴的麻烦,省时省力,还不容易出错,代码不多,循环追加有点绕,想想也就明白了,不懂的随时留言提问,大家一起学习进步。

有想法的小伙伴还可以将文章中的代码进行打包,做成一个exe可执行的小软件,包装好发给别人使用,也可以赚点小费噢,关于打包的教程这里不再赘述,欢迎前往:​ ​三个你必须要记住的Pyinstaller打包命令——利用Python实现打包exe​ ​。

八、彩蛋

下面两份代码是群内小伙伴提供了,小编也自行测试了下,亲测有效,欢迎大家积极尝试噢!

来自群友Jayson的代码:

# -*- coding: utf-8 -*-
# @Author: hebe
# @Date:   2020-04-18 18:31:03
# @Last Modified by:   hebe
# @Last Modified time: 2020-04-18 19:40:48
import os
import glob
import openpyxldef merge_xlsx_files(xlsx_files):wb = openpyxl.load_workbook(xlsx_files[0])ws = wb.activews.title = "merged result"for  filename in xlsx_files[1:]:workbook = openpyxl.load_workbook(filename)sheet = workbook.activefor row in sheet.iter_rows(min_row=1):values = [cell.value for cell in row]ws.append(values)return wb#path is very important here , must true.
def get_all_xlsx_files(path):xlsx_files = glob.glob(os.path.join(r'C:\\Users\\pdcfi\\Desktop\\', '*.xlsx'))sorted(xlsx_files, key=str.lower)return xlsx_filesdef main():xlsx_files = get_all_xlsx_files(os.path.expanduser('~lmx'))wb = merge_xlsx_files(xlsx_files)wb.save('merged_form.xlsx')if __name__ == '__main__':main()print("all excel append OK!")

来自好友刘早起的代码:

# -*- coding: utf-8 -*-
from openpyxl import load_workbook, Workbook
import globpath = "C:\\Users\\pdcfi\\Desktop\\excel\\"
new_workbook = Workbook()
new_sheet = new_workbook.active# 用flag变量明确新表是否已经添加了表头,只要添加过一次就无须重复再添加
flag = 0for file in glob.glob(path + '/*.xlsx'):workbook = load_workbook(file)sheet = workbook.activecoloum_A = sheet['A']row_lst = []for cell in coloum_A:if cell:print(cell.row)row_lst.append(cell.row)if not flag:header = sheet[1]header_lst = []for cell in header:header_lst.append(cell.value)new_sheet.append(header_lst)flag = 1for row in row_lst:data_lst = []for cell in sheet[row]:data_lst.append(cell.value)new_sheet.append(data_lst)new_workbook.save(path + '/' + '符合筛选条件的新表.xlsx')

来自群友Engineer的代码:

import tkinter as tk
from tkinter import filedialog
import os
import pandas as pd
import globroot = tk.Tk()
root.withdraw()# 选择文件夹位置
filelocation = os.path.normpath(filedialog.askdirectory(initialdir=os.getcwd()))
lst = []# 读取文件夹下所有文件(xls和xlsx都读取)
for i in glob.glob(filelocation + "\\\\" + "*.*"):if os.path.splitext(i)[1] in [".xls", ".xlsx"]:lst.append(pd.read_excel(i))# 保存合并后的excel文件
writer = pd.ExcelWriter(filedialog.asksaveasfilename(title="保存", initialdir=filelocation, defaultextension="xlsx",filetypes=[("Excel 工作簿", "*.xlsx"),("Excel 97-2003 工作簿", "*.xls")]))
pd.concat(lst).to_excel(writer, 'all', index=False)
writer.save()print('\n%d个文件已经合并成功!' % len(lst))

最后需要本文项目代码的小伙伴,请在公众号后台回复“ 合并文件 ”关键字进行获取,如果在运行过程中有遇到任何问题,请随时留言或者加小编好友,小编看到会帮助大家解决bug噢!

当然了,实现本文功能不仅仅限于上面提及的3种方式,使用pandas也是可以做到的,如果你还有其他方法,欢迎交个朋友一起学习交流。

手把手教你4种方法用Python批量实现多Excel多Sheet合并相关推荐

  1. python 合并excel 自动更新_手把手教你4种方法用Python批量实现多Excel多Sheet合并

    一.前言 大家好,我是崔艳飞.前两天给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Ex ...

  2. 用Python批量实现多Excel多Sheet合并的4种方法

    大家好,我是崔艳飞.前两天给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Excel表格 ...

  3. 用Python批量实现多Excel多Sheet合并,学会这4步就够了

    一.前言 Python自动化文章后续,有比较的读者面临这个问题,有很多个Excel表格,他需要对这些Excel文件进行合并. 诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文 ...

  4. 如何搭建动态IP池?手把手教你3种方法!

    动态IP是什么?在当今互联网中,人人都需要访问网络来获取资讯解决工作和学习生活的需求,而网络中的黑客也越来越多,稍不留意就会在网络中留下自己的痕迹.在这种情况下,动态IP的使用就非常有必要了. 另外很 ...

  5. 手把手教你用Python批量实现在Excel后里面新加一列,并且内容为excel 表名(附源码)...

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 打起黄莺儿,莫教枝上啼. 大家好, ...

  6. python实时监控文件目录_教你三种方法,用 Python实时监控文件

    原标题:教你三种方法,用 Python实时监控文件 在业务稳定性要求比较高的情况下,运维为能及时发现问题,有时需要对应用程序的日志进行实时分析,当符合某个条件时就立刻报警,而不是被动等待出问题后去解决 ...

  7. python numpy安装教程_手把手教你搭建机器学习开发环境—Python与NumPy的超简安装教程...

    手把手教你搭建机器学习开发环境Python语言是机器学习的基础,所以,想要入门机器学习,配置好Python的开发环境是第一步.本文就手把手的教你配置好基于Python的机器学习开发环境.超简单!第一步 ...

  8. 教你几种方法最大限度减轻酒精对你身体的伤害

    郑重告知:新婚期间新娘新郎别喝酒!有证据表明,酒精摄入过多会对胎儿发育产生不良影响,甚至会产下畸形儿!切记切记! 人在江湖身不由己,"面对亲戚朋友的推杯换盏我怎么好拒绝?!" 那么 ...

  9. html在小的电脑屏幕字体缩小,网页的字变小了怎么办?教你3种方法,让你看网页不再费眼~...

    原标题:网页的字变小了怎么办?教你3种方法,让你看网页不再费眼~ 使用电脑的时候,最离不开的就是网络.但是最近有位朋友在使用电脑浏览器浏览网页的时候,发现字体突然变小了,看起来很不舒服,但是又不知道恢 ...

最新文章

  1. qstring 属于元数据类型吗_2020年退休养老金只有1800元,属于什么水平?还要继续工作吗?...
  2. 62 Celery远程调用
  3. 人脸识别领域相关金融标准将出台
  4. 20155203 - 杜可欣 - 预备作业2
  5. BootStrap里面好看的背景色
  6. java与c基本数据类型比较,C++与Java基本数据类型比较
  7. mysql数据库用doc命令,myMySQL数据库怎么使用dos命令安装? MySQL数据库使用教程
  8. [Java] ActionEvent 事件处理
  9. 精通 JS正则表达式(转)
  10. 定位相关MATLAB仿真代码与在线MATLAB仿真平台
  11. 密码学的发展(第二篇:恩尼格码机)
  12. 饭店点餐系统之系统网络结构
  13. 计算机绘图读后笔记3000字,0921计算机绘图0.doc
  14. 2022年软件测试人员必读的经典书籍推荐(附电子版)
  15. 白杨SEO:软文怎么写?怎么才能写好推广软文,有哪些技巧?
  16. 如何看懂Elastic解决方案与Gartner的魔力象限
  17. design短语的用法总结_design的用法
  18. 记一次微信H5支付失败(网络环境未能通过安全验证,请稍后再试)解决方案
  19. 在Windows中编辑好的汉字文档,上传到Linux下打开乱码问题
  20. 鸟哥Linux私房菜:第六章笔记

热门文章

  1. 工具推荐丨2022产品必备的在线原型工具
  2. 【洛谷 P3041】 [USACO12JAN]视频游戏的连击Video Game Combos(AC自动机,dp)
  3. grayscale.js插件使页面变灰
  4. GEWorker界面展示及功能组成介绍,怎么使用GE-Worker?
  5. 人工智能会取代人类的艺术创造力吗
  6. 精益生产如何与数字化结合?
  7. 大数据和区块链之间的比较分析
  8. 讯闪4.92带图片教程
  9. 迅闪3.1助手发现一个小BUG
  10. 视频处理术语解析(1)Vertical Blanking Interval (VBI)