使用 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基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
Python 2与Python 3版本和编码的对比
Feb 14 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
python实现验证码识别功能
Jun 07 Python
python实现换位加密算法的示例
Oct 14 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
python3.x中安装web.py步骤方法
Jun 23 Python
Python 绘制可视化折线图
Jul 22 Python
解决Python安装cryptography报错问题
Sep 03 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 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获得数组交集与差集的方法
2015/06/10 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
使用jquery实现简单的ajax
2013/07/08 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
对python周期性定时器的示例详解
2019/02/19 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
浅析matlab中imadjust函数
2020/02/27 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
茶叶生产计划书
2014/01/10 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书