使用 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 19 Python
python从入门到精通(DAY 3)
Dec 20 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
Python与R语言的简要对比
Nov 14 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
pandas删除指定行详解
Apr 04 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
Flask框架单例模式实现方法详解
Jul 31 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
使用Matplotlib 绘制精美的数学图形例子
Dec 13 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
理解Django 中Call Stack机制的小Demo
Sep 01 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中数据的批量导入(csv文件)
2006/10/09 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
JavaScript中Function详解
2015/02/27 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
Django 路由控制的实现代码
2018/11/08 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
Python PO设计模式的具体使用
2019/08/16 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
奖学金自我鉴定范文
2013/10/03 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫