使用 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实现QQ游戏大家来找茬辅助工具
Sep 14 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
Python 常用的安装Module方式汇总
May 06 Python
Python机器学习之SVM支持向量机
Dec 27 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
对命令行模式与python交互模式介绍
May 12 Python
解决python 上传图片限制格式问题
Oct 30 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
python空元组在all中返回结果详解
Dec 15 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适配器模式介绍
2012/08/14 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
python将图片文件转换成base64编码的方法
2015/03/14 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
彪马法国官网:PUMA法国
2019/12/15 全球购物
租赁协议书
2015/01/27 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
信用卡工作证明范本
2015/06/19 职场文书
高一语文教学反思
2016/02/16 职场文书
话题作文之成长
2019/12/09 职场文书
Python机器学习之基础概述
2021/05/19 Python
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL