使用 Python 合并多个格式一致的 Excel 文件

一 问题描述



最近朋友在工作中遇到这样一个问题,她每天都要处理如下一批 Excel 表格:每个表格的都只有一个 sheet,表格的前两行为表格标题及表头,表格的最后一行是相关人员签字。最终目标是将每个表格的内容合并到一个 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社区营其它相关文章!

原文地址:https://www.cnblogs.com/pypypy/p/12109625.html

时间: 2024-11-13 05:27:03

使用 Python 合并多个格式一致的 Excel 文件的相关文章

python第三方库学习之xlrd读取Excel文件

因为经常会涉及到从Excel表中导数据,所以就学习了python的xlrd来读取excel中的数据. 1.xlrd的安装 xlrd是python的第三方库,所以是需要自己安装的,可以在python的官网http://pypi.python.org/pypi/xlrd下载该模块来安装,也可以通过其他手段,比如easy_install或者pip啥的,我已经安装好pip所以就用最懒的方式来安装了pip install xlrd来安装. 2.分析excel文件的层级对象 要读取excel的数据,就要了解

C# conn.open() 外部表不是预期的格式( 读取EXCEL文件出错)

环境:win7+iis7+Office2007 在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错,Excel文件正常. 调试代码,创建连接对象oleDbConnection也正常,但在conn.Open()打开链接时出错. 仔细看了下链接字符串,检查出了错误,Excel版本问题,Exce连接字符串版本是office2003的 ,更改为Excel2

是哟办法python读、写、追写excel文件

三个工具包 python操作excel的三个工具包如下 xlrd: 对excel进行读相关操作 xlwt: 对excel进行写相关操作 xlutils: 对excel读写操作的整合 注意,只能操作.xls,不能操作.xlsx. 这三个工具包都可以直接使用pip进行下载: sudo pip install xlrd sudo pip install xlwt sudo pip install xlutils xls文件的追写 xlwt只能创建一个全新的excel文件,然后对这个文件进行写入内容以及

python将数据带格式输出到excel

from xlutils.copy import copyimport xlrdimport xlwtreadworkbook=xlrd.open_workbook('工作簿1.xls',formatting_info=True)#open one workbook,后面这个参数是用来复制打开工作表的格式 而不是仅仅复制类容readsheet=readworkbook.sheet_by_index(0)#read one sheetnew_workbook=copy(readworkbook)#

python常识系列07-->python利用xlwt写入excel文件

前言 读书之法,在循序而渐进,熟读而精思.--朱熹 抽空又来写一篇,毕竟知识在于分享! 一.xlwt模块是什么 python第三方工具包,用于往excel中写入数据:(ps:只能创建新表格,不能修改表格内容!!) 它支持 xlsx 和 xls 格式的excel表格: 与之对应的还有一个xlrd包,用于读取excel中的数据. 二.安装xlwt模块 命令行中输入:pip install xlwt 下载安装包进行离线安装 三.xlwt应用举例 3.1 xlwt基本应用实例 import xlwt #

python读取excel文件(xrld模块)

Python读取excel文件 一.python  xlrd模块 安装 mac 下安装python  xlrd模块 http://www.crifan.com/python_read_excel_xls_file_xlrd/comment-page-1/ python setup.py install 在mac 下出现的错误是 http://stackoverflow.com/questions/18199853/error-could-not-create-library-python-2-7

利用python合并两个文件

1格式如下 在做利用zabbix的api来批量添加主机的时候,需要处理ip和hostname,在借用别人写的py程序的基础上,自己有改装了以下脚本,为自己使用.需要时ip和hostname为一个统一格式. $ cat ip.txt 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 $ cat hostname.txt tx-1 tx-2 tx-3 tx-4 最后需要合并为如下格式 1 tx-1,1.1.1.1 2 tx-2,2.2.2.2 3 tx-3,3.3.3.3 4 tx-4

用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)

前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过python读取.正则表达式处理并写入Excel文档将大大减少人工处理的工作量. 1. 从gerrit获取原始信息,存入文本文档: $ssh –p 29418 <your-account>@192.168.1.16 gerrit query status:merged since:<date

python合并文本文件示例代码

python合并文本文件示例代码. python实现两个文本合并employee文件中记录了工号和姓名cat employee.txt: 100 Jason Smith200 John Doe300 Sanjay Gupta400 Ashok Sharma bonus文件中记录工号和工资cat bonus.txt: 100 $5,000200 $500300 $3,000400 $1,250要求把两个文件合并并输出如下, 处理结果:400 ashok sharma $1,250 100 jaso