使用 Python 合并多个格式一致的 Excel 文件(推荐)


Posted in Python onDecember 09, 2019

一 问题描述

最近朋友在工作中遇到这样一个问题,她每天都要处理如下一批 Excel 表格:每个表格的都只有一个 sheet,表格的前两行为表格标题及表头,表格的最后一行是相关人员签字。最终目标是将每个表格的内容合并到一个 Excel 表格中,使之成为一张表格。在她未咨询我之前,每天复制粘贴这一类操作占用了她绝大部分时间。表格样式如下:

使用 Python 合并多个格式一致的 Excel 文件(推荐)

二 需求分析

根据她的描述,最终需求应该是这样的:在这一批表格中选取任意一个表格的前两行作为新表格的标题与表头,将这两行内容以嵌套列表的形式插入一个名为 data 空列表中。取每张表格的第3至倒数第二行,剔除空白行的内容。并将所有表格的内容以子列表的方式依次插入 data 列表中。任取一表格的最后一行以子列表的方式插入 data 列表中。最后将 data 列表的内容写入一个新的 Excel 表格中。

三 查阅资料

通过几分钟的上网查询,得出以下结论:

3.1 通过 xlrd 和 xlsxwriter 模块即可解决次需求;

3.2 之所以使用 xlrd 和 xlsxwriter 是因为: xlrd擅长读取 Excel 文件,不适合写入,用 xlsxwriter 来进行大规模写入 Excel 表格不会出现报错。

四 编码

一切以解决当前问题为向导,说干就干。 coding … …

# -*- coding:utf-8 -*-
import os, xlrd, xlsxwriter
source_dir = r'input'
new_execl = "All in one.xlsx"
raw_excels = os.listdir(source_dir)
keyword = "油站经理" # 除包括此关键字的行均插入
data = []
filename = os.path.join(source_dir, raw_excels[0])
wb = xlrd.open_workbook(filename)
sheet = wb.sheets()[0]
data.append(sheet.row_values(0))
data.append(sheet.row_values(1))
for excel in raw_excels:
 filename = os.path.join(source_dir, excel)
 wb = xlrd.open_workbook(filename)
 sheet = wb.sheets()[0]
 for row_num in range(2, sheet.nrows):
  row_values = [str(i) for i in sheet.row_values(row_num)]
  if len(''.join(row_values)) and (keyword not in ''.join(row_values)):
   data.append(sheet.row_values(row_num))
data.append(sheet.row_values(sheet.nrows-1))
new_wb = xlsxwriter.Workbook(new_execl)
worksheet = new_wb.add_worksheet()
font = new_wb.add_format({"font_size":11})
for i in range(len(data)):
 for j in range(len(data[i])):
  worksheet.write(i, j, data[i][j], font)
new_wb.close()

半小时后,大功告成!

五 使用说明

5.1 下载安装 Python3.X(具体安装步骤自己查一下);

5.2 安装 xlrd 和 xlsxwriter 模块,参考命令: pip install xlrd xlsxwriter。开始此步骤之前可能需要先升级pip,具体升级命令系统会提示,复制粘贴即可;

5.3 新建一个名为 input 的文件夹,将需要合并的文件复制到这个文件夹下;

5.4 把以上代码复制以 excels_merge.py 的文件名保存在与 input 文件夹同级别的文件夹中,双击鼠标稍后即可。如果没有关联打开方式,那么就在资源管理器的地址栏输入“cmd”,在打开的命令窗口输入:python excels_merge.py。生成的 All in one.xlsx 即为合并后的新 Excel 文件。

六 总结

6.1 [str(i) for i in sheet.row_values(row_num)]这一部分代码实现了将列表内的元素统一转化为字符串,主要是为了下一行代码实现将列表转换为字符串;

6.3 此的脚本不对源 Excel 文件进行任何操作,可是放心使用;

6.4 以上脚本就是随手一写,都没有优化,以后如果数据量太大估计会考虑优化,希望大家多提意见或建议;

6.5 源代码可以访问我的同名 CSDN 博客及 GitHub 获取。

总结

以上所述是小编给大家介绍的使用 Python 合并多个格式一致的 Excel 文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
Python基于Socket实现的简单聊天程序示例
Aug 05 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
解决pandas .to_excel不覆盖已有sheet的问题
Dec 10 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
python实现贪吃蛇游戏源码
Mar 21 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 Python
matplotlib部件之套索Lasso的使用
Feb 24 Python
怎么用Python识别手势数字
Jun 07 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 #Python
python3 tcp的粘包现象和解决办法解析
Dec 09 #Python
python绘制规则网络图形实例
Dec 09 #Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 #Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 #Python
Python二次规划和线性规划使用实例
Dec 09 #Python
Python Numpy数组扩展repeat和tile使用实例解析
Dec 09 #Python
You might like
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
php下目前为目最全的CURL中文说明
2010/08/01 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
取得传值的函数
2006/10/27 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
domReady的实现案例
2016/11/23 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
Python实现控制台输入密码的方法
2015/05/29 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
Virtualenv 搭建 Py项目运行环境的教程详解
2020/06/22 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
自荐书范文
2013/12/08 职场文书
公务员职业生涯规划书范文  
2014/01/19 职场文书
低碳生活倡议书
2014/04/14 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
保险公司开门红口号
2014/06/21 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
报名委托书
2015/01/29 职场文书
酒店辞职书范文
2015/02/26 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书