使用 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统计文件行数示例分享
Feb 21 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
Jun 11 Python
python 判断参数为Nonetype类型或空的实例
Oct 30 Python
python 格式化输出百分号的方法
Jan 20 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
Python中Unittest框架的具体使用
Aug 27 Python
Django之模板层的实现代码
Sep 09 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
Python中三维坐标空间绘制的实现
Sep 22 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 Python
python使用numpy中的size()函数实例用法详解
Jan 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
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
使用php清除bom示例
2014/03/03 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
旅游专业职业生涯规划范文
2014/01/13 职场文书
家长评语大全
2014/01/22 职场文书
房地产项目策划书
2014/02/05 职场文书
小学生寒假家长评语
2014/04/16 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
python 解决微分方程的操作(数值解法)
2021/05/26 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android