使用 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用GET方法上传文件
Mar 10 Python
Python中的高级函数map/reduce使用实例
Apr 13 Python
编写Python脚本使得web页面上的代码高亮显示
Apr 24 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
Python如何计算语句执行时间
Nov 22 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
Python实现不规则图形填充的思路
Feb 02 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
python中subplot大小的设置步骤
Jun 28 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
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
2018/07/31 jQuery
Vue源码解析之数组变异的实现
2018/12/04 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python实现简单字典树的方法
2016/04/29 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
房屋转让协议书范本
2014/04/11 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
费城故事观后感
2015/06/10 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
2015年除四害工作总结
2015/07/23 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL