使用 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中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
Oct 23 Python
Django发送html邮件的方法
May 26 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
使用python实现rsa算法代码
Feb 17 Python
PyQt5每天必学之切换按钮
Aug 20 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
10个顶级Python实用库推荐
Mar 04 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 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发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
PHP里的中文变量说明
2011/07/23 PHP
file_get_contents("php://input", "r")实例介绍
2013/07/01 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
总结一些js自定义的函数
2006/08/05 Javascript
DOM下的节点属性和操作小结
2009/05/14 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
javascript 解析url的search方法
2010/02/09 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
详细介绍Python的鸭子类型
2016/09/12 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
公务员转正鉴定材料
2014/02/11 职场文书
欠款起诉书范文
2015/05/19 职场文书