使用 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中使用select模块实现非阻塞的IO
Feb 03 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
python中id函数运行方式
Jul 03 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
python的html标准库
Apr 29 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
Expandable "Detail" Table Rows
2007/08/29 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
Python基于有道实现英汉字典功能
2015/07/25 Python
Python模拟三级菜单效果
2017/09/11 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
python可以用哪些数据库
2020/06/22 Python
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
研究生考核个人自我鉴定
2014/03/27 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
小区文明倡议书
2014/05/16 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
公司离职证明标准格式
2014/11/18 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
用JS创建一个录屏功能
2021/11/11 Javascript