当工作碰到需要将几个excel合并时,比如一个表,收集每个人的个人信息,陆续收回来就是十几张甚至几十张表,少了还好解决,但是很多的话就不能一个一个去复制了,这时候就想到了python,Python大法好啊。短短100行代码解决,无论几十张,几百张表,瞬间搞定。

首先需要安装两个模块:xlrd(读取excel),xlsxwriter(写入excel)

pip install xlrd
pip install xlsxwriter

安装好以后,直接上代码。如下:

 # -*- coding: UTF-8 -*-
# Filename : Merge_excel.py
# author by : Awrrays import xlrd,xlsxwriter # 打开表格
def openxls(file):
try:
fx = xlrd.open_workbook(file)
return fx
except Exception as e:
print('读取文件错误,错误为:{0}'.format(e)) # 获取所有sheet
def getsheets(fx):
return fx.sheets() # 获取某个sheet的行数
def getrows(fx,sheet_num):
table = fx.sheets()[sheet_num]
rows = table.nrows
return rows # 获取某个文件的内容并返回所有行的内容
def getdump(fl,sheet_num):
fx = openxls(fl)
table = fx.sheet_by_name(sheet_name[sheet_num])
row_num = getrows(fx,sheet_num)
row_len = len(rows)
for row in range(0,row_num):
data = table.row_values(row)
rows.append(data)
dump.append(rows[row_len:])
return dump
# 定义要合并的所有文件
allxls = ["E:/test/test1.xlsx",'E:/test/test2.xlsx','E:/test/test3.xlsx']
# 定义合并后的文件
endxls = "E:/test/test.xlsx" # 存储一个sheet的结果
sheet_value = []
# 存储各sheet的名称
sheet_name = []
# 存储一行内容
rows = []
# 存储所有读取的结果
dump = [] # 读取第一个待读文件,获取sheet数
fx = openxls(allxls[0])
sheets = getsheets(fx)
x = 0
for sheet in sheets:
sheet_name.append(sheet.name)
sheet_value.append([])
x += 1 # 依次读取各sheet的内容
for sheet_num in range(0,x):
# 依次获取每个文件当前sheet的内容
for fl in allxls:
print('正在读取文件{0}的第{1}个标签....'.format(fl,sheet_num))
dump = getdump(fl,sheet_num)
sheet_value[sheet_num].append(dump) file_num = len(allxls)
endvlue = [] # 获取各sheet的内容
def get_sheet_value(k):
for z in range(k,k+file_num):
endvlue.append(sheet_value[0][0][z])
return endvlue # 打开合并完成后的文件
wb = xlsxwriter.Workbook(endxls)
# 创建一个工作表
ws = wb.add_worksheet()
polit = 0
line_num = 0
# 依次遍历每个sheet中的内容
for s in range(0,x * file_num,file_num):
file_value = get_sheet_value(s)
table_value = file_value[polit:]
# 将每一个sheet中的内容写入新文件
for a in range(0,len(table_value)):
# 将sheet行写入到新文件
for b in range(0,len(table_value[0])):
# 将每一行的内容写入新文件
for c in range(0,len(table_value[0][0])):
data = table_value[a][b][c]
ws.write(line_num,c,data)
line_num += 1
# 设置分隔点
polit = len(file_value)
wb.close()

ok,最后结果:

使用python合并excel的更多相关文章

  1. python合并多个excel

    前言 1.工作中,经常需要合并多个Excel文件.如果文件数量比较多,则工作量大,易出错,此时,可以使用Python来快速的完成合并. 2.使用方法:将需要合并的多个Excel文件放到同一个文件夹下, ...

  2. Python合并多个Excel数据

    安装模块 1.找到对应的模块  http://www.python-excel.org/ 2.用pip install 安装 pip install xlrdpip install XlsxWrite ...

  3. python操作excel表格(xlrd/xlwt)

    最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...

  4. [转]用Python读写Excel文件

    [转]用Python读写Excel文件   转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...

  5. python 处理 Excel 表格

    see: http://www.cnblogs.com/sunada2005/p/3193300.html 一.可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表 ...

  6. python读写Excel文件的函数--使用xlrd/xlwt

    python中读取Excel的模块或者说工具有很多,如以下几种: Packages 文档下载 说明 openpyxl Download | Documentation | Bitbucket  The ...

  7. Python操作excel表格

    用Python操作Excel在工作中还是挺常用的,因为毕竟不懂Excel是一个用户庞大的数据管理软件 注:本篇代码在Python3环境下运行 首先导入两个模块xlrd和xlwt,xlrd用来读取Exc ...

  8. 【转】python操作excel表格(xlrd/xlwt)

    [转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异, ...

  9. Python处理Excel和PDF文档

    一.使用Python操作Excel Python来操作Excel文档以及如何利用Python语言的函数和表达式操纵Excel文档中的数据. 虽然微软公司本身提供了一些函数,我们可以使用这些函数操作Ex ...

随机推荐

  1. 002——Netty之Netty介绍

    Netty出现背景 Java NIO难用 据说存在bug 业界其他NIO框架不成熟 Netty主要解决两个相应关注领域 (1)异步和事件驱动的实现. (2)一组设计模式,将应用逻辑与网络层解耦. 特性 ...

  2. Mac 安装 homebrew 流程 以及 停在 Updating Homebrew等 常见错误解决方法

    懒人操作顺序:S_01>>>S_02>>>S_03 首先这是homebrew的官网 https://brew.sh/index_zh-cn 安装方法是在终端中输入 ...

  3. Go-项目结构和代码组织

    简介 做大量的输入,通过对比.借鉴,加上自己的经验,产出一个尽可能优的方案. 开源界优秀项目的结构示例 因为最新的 Go 版本已经使用 module 作为版本依赖,所以,所有项目的 vendor 我都 ...

  4. Day 03--设计与完善(一)

    1.今天我们把软件原型基本完成了,功能流程一套下来,像一个真正的软件了.这是几个主要模块: 首先是首页,登入小程序后可以直观地看到各个食堂,并显示自己的定位.屏幕下方还可以时刻切换查看自己以前的订单. ...

  5. 使用.Net Core CLI命令dotnet new创建自定义模板

    文章起源来自一篇博客:使用 .NET CORE 创建 项目模板,模板项目,Template - DeepThought - 博客园 之前使用Abp的时候就很认同Abp创建模板项目的方式.想不到.Net ...

  6. 基于STM32F429和Cube的ov2640程序

    1.ov2640和DCMI介绍 OV2640 是 OV(OmniVision)公司生产的一颗 1/4 寸的 CMOS UXGA(1632*1232)图 像传感器.该传感器体积小.工作电压低,提供单片 ...

  7. HTML页面仿WORD样式

    公司要求不再浏览器中添加office插件的前提下.展示WORD文档中的内容要求一一对应.经过查询资料以及调整,得出如下相关资料: 1  标题样式: 目录 -- 宋体 小二 加粗 一级标题 -- 微软雅 ...

  8. Codeforces 697D

    题意略. 思路: 对于随机产生的一个数列,对于某个儿子,其兄弟在其前面的概率为 1 / 2. 所以这个兄弟对期望的贡献为son[v] / 2,所有兄弟加起来即为(tot - 1) / 2. 详见代码: ...

  9. 防盗链测试01 - Jwplayer+Tengine2.3.1 mp4模块打造流媒体测试服务器

    最近有个想法,想做类似下面的视频URL验证: 1.URL Tag Validation 2.Special format of URL for preventing unauthorized usag ...

  10. Delphi - 通过WinAPI WinExec直接调用系统工具

    看如下代码: WinExec('mspaint.exe', SW_SHOWNORMAL); // SW_SHOWNORMAL = 1 系统画图 WinExec('write.exe', SW_SHOW ...