文档章节

使用python合并excel

o
 osc_g8254g7s
发布于 2019/08/19 19:39
字数 684
阅读 23
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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

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

pip install xlrd
pip install xlsxwriter

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

 

 1 # -*- coding: UTF-8 -*-
 2 # Filename : Merge_excel.py
 3 # author by : Awrrays
 4 
 5 import xlrd,xlsxwriter
 6 
 7 # 打开表格
 8 def openxls(file):
 9     try:
10         fx = xlrd.open_workbook(file)
11         return fx
12     except Exception as e:
13         print('读取文件错误,错误为:{0}'.format(e))
14 
15 # 获取所有sheet
16 def getsheets(fx):
17     return fx.sheets()
18 
19 # 获取某个sheet的行数
20 def getrows(fx,sheet_num):
21     table = fx.sheets()[sheet_num]
22     rows = table.nrows
23     return rows
24 
25 # 获取某个文件的内容并返回所有行的内容
26 def getdump(fl,sheet_num):
27     fx = openxls(fl)
28     table = fx.sheet_by_name(sheet_name[sheet_num])
29     row_num = getrows(fx,sheet_num)
30     row_len = len(rows)
31     for row in range(0,row_num):
32         data = table.row_values(row)
33         rows.append(data)
34     dump.append(rows[row_len:])
35     return dump
36 # 定义要合并的所有文件
37 allxls = ["E:/test/test1.xlsx",'E:/test/test2.xlsx','E:/test/test3.xlsx']
38 # 定义合并后的文件
39 endxls = "E:/test/test.xlsx"
40 
41 # 存储一个sheet的结果
42 sheet_value = []
43 # 存储各sheet的名称
44 sheet_name = []
45 # 存储一行内容
46 rows = []
47 # 存储所有读取的结果
48 dump = []
49 
50 # 读取第一个待读文件,获取sheet数
51 fx = openxls(allxls[0])
52 sheets = getsheets(fx)
53 x = 0
54 for sheet in sheets:
55     sheet_name.append(sheet.name)
56     sheet_value.append([])
57     x += 1
58 
59 # 依次读取各sheet的内容
60 for sheet_num in range(0,x):
61     # 依次获取每个文件当前sheet的内容
62     for fl in allxls:
63         print('正在读取文件{0}的第{1}个标签....'.format(fl,sheet_num))
64         dump = getdump(fl,sheet_num)
65     sheet_value[sheet_num].append(dump)
66 
67 file_num = len(allxls)
68 endvlue = []
69 
70 # 获取各sheet的内容
71 def get_sheet_value(k):
72     for z in range(k,k+file_num):
73         endvlue.append(sheet_value[0][0][z])
74     return endvlue
75 
76 # 打开合并完成后的文件
77 wb = xlsxwriter.Workbook(endxls)
78 # 创建一个工作表
79 ws = wb.add_worksheet()
80 polit = 0
81 line_num = 0
82 # 依次遍历每个sheet中的内容
83 for s in range(0,x * file_num,file_num):
84     file_value = get_sheet_value(s)
85     table_value = file_value[polit:]
86     # 将每一个sheet中的内容写入新文件
87     for a in range(0,len(table_value)):
88         # 将sheet行写入到新文件
89         for b in range(0,len(table_value[0])):
90             # 将每一行的内容写入新文件
91             for c in range(0,len(table_value[0][0])):
92                 data = table_value[a][b][c]
93                 ws.write(line_num,c,data)
94             line_num += 1
95     # 设置分隔点
96     polit = len(file_value)
97 wb.close()

 

ok,最后结果:

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
python中使用xlrd、xlwt操作excel表格详解

这篇文章主要介绍了python中使用xlrd、xlwt操作excel表格详解,python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库,需要的朋友可以参考下 最近遇到一个情景,就...

wangxuwei
2018/05/19
75
0
python操作excel表格(xlrd/xlwt)以及表格的修改(OpenPyXL)

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。 需要安装这2个库,安装的方式有多重可以直接使用pip安装(根据自己的需求安装): 如pip安装 pip3 insta...

osc_my7ioimn
2018/10/11
26
0
python在办公时能给我们带来什么?

前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:谦睿科技教育 PS:如有需要Python学习资料的小伙伴可以加...

osc_0vfknl5u
04/08
28
0
Python办公自动化|自动更新表格,告别繁琐

第一时间接收最新Python干货! 系列导读 当然实现这一功能可以使用VBA或者Excel中的其他操作,但是查了相关操作略显复杂,现在我们使用Python来完成,主要涉及以下操作: 为了尽可能模拟读者...

早起Python
05/23
0
0
利用 Python 进行多 Sheet 表合并、多工作簿合并、一表按列拆分

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 ------------------- End ------------------- 往期精彩文章推荐: /今日留言主题/ 随便说...

Python进阶者
02/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

038. RocketMQ 高性能最佳实践

1. 最佳实践之 Producer 1. 一个应用尽可能用一个 Topic,消息子类型用 tags 来标识,tags 可以由应用自由设置。 只有发送消息设置了 tags,消费方在订阅消息时,才可以利用 tags 在 broker...

华夏紫穹
28分钟前
24
0
QQ音乐Android客户端Web页面通用性能优化实践

QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化。本文将介绍 QQ 音乐 Android 客户端在进行 Web 页面通用性能优化过程中...

腾讯云开发者社区
47分钟前
26
0
rabbitmq+sleuth+zinkip 分布式链路追踪

我们都知道,微服务之间通过feign传递,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引...

良许Linux
今天
16
0
5分钟搭建属于你的视频会议系统

前言 在疫情的推动下视频会议和线上办公大力发展,如果你也想了解视频会议,看看这篇文章吧 准备工作 一台Ubuntu18.04拥有公网IP的服务器 一个域名提前解析到这台服务器上 安全组设置规则tcp...

死磕音视频
今天
17
0
从文本JavaScript中删除HTML - Strip HTML from Text JavaScript

问题: 有没有一种简单的方法可以在JavaScript中获取html字符串并去除html? 解决方案: 参考一: https://stackoom.com/question/3RxM/从文本JavaScript中删除HTML 参考二: https://oldbug...

fyin1314
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部