使用 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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
Python中将字典转换为列表的方法
Sep 21 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
对numpy中array和asarray的区别详解
Apr 17 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
Python基于traceback模块获取异常信息
Jul 23 Python
详解python的super()的作用和原理
Oct 29 Python
python tkinter实现定时关机
Apr 21 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
PHP 木马攻击防御技巧
2009/06/13 PHP
php利用事务处理转账问题
2015/04/22 PHP
js的with语句使用方法
2007/09/21 Javascript
JS支持带x身份证号码验证函数
2008/08/10 Javascript
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
vue实现引入本地json的方法分析
2018/07/12 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
python实现学生管理系统
2018/01/11 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Python如何对齐字符串
2020/07/30 Python
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
端午节活动总结
2014/08/26 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
早会开场白台词大全
2015/06/01 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL