使用 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制作CSDN免积分下载器
Mar 10 Python
python内存管理分析
Apr 08 Python
Python实现读取json文件到excel表
Nov 18 Python
解决python爬虫中有中文的url问题
May 11 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
如何基于python实现脚本加密
Dec 28 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
PYcharm 激活方法(推荐)
Mar 23 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 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/11/05 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
JavaScript 学习笔记(四)
2009/12/31 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
Linux下编译安装MySQL-Python教程
2015/02/02 Python
Python脚本处理空格的方法
2016/08/08 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
工程招投标邀请书
2014/01/30 职场文书
写景作文评语集锦
2014/12/25 职场文书
酒会邀请函
2015/01/31 职场文书
婚宴致辞
2015/07/28 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书