使用 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之通过Python连接数据库
Oct 28 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
Python定时任务sched模块用法示例
Jul 16 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
python开头的coding设置方法
Aug 08 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
django自定义模板标签过程解析
Dec 14 Python
PyTorch实现AlexNet示例
Jan 14 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
python实现简单的名片管理系统
Apr 26 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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生成缩略图的函数代码(修改版)
2011/01/18 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP 文件上传限制问题
2019/09/01 PHP
使用js实现雪花飘落效果
2013/08/26 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
Python pymongo模块用法示例
2018/03/31 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
《记金华的双龙洞》教学反思
2014/04/19 职场文书
《称象》教学反思
2014/04/25 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
研究生简历自我评
2015/03/11 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
护士2015年终工作总结
2015/04/29 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS