1、环境

代码运行环境:python3.7

相关的库:xlrd、xlwt

2、目的

通过xlrd库读取各个表格的数据,通过xlwt库将读取到的数据写入到一个表格中。

3、实现

在工程目录下,有一个test目录,存放的是待合并的表格,输出表格为merge.xls,就输出在当前工程目录下。每个合并的表格中我只需要"body"这个sheet,而且这个sheet中的数据格式都是按照下面的格式存放的。

实现的代码如下:

 1 # encoding: utf-8
2
3 '''
4 本代码的作用是将多个表格合并为一个表格。
5 '''
6
7 import os
8 import xlrd
9 import xlwt
10 import logging
11
12 # 设置logging.basicConfig()方法的参数和配置logging.basicConfig函数
13 FORMAT = '[%(funcName)s: %(lineno)d]: %(message)s'
14 LEVEL = logging.INFO
15 logging.basicConfig(level = LEVEL, format=FORMAT)
16
17 excel_content = []
18 output_file = './merge.xls'
19
20 # 打开表格,获取信息
21 def get_obj_list(dir_name):
22 filelist = os.listdir(dir_name)
23 for item in filelist :
24 item = dir_name + item
25 if os.path.isfile(item) and (item[-4:] == '.xls' or item[-5:] == '.xlsx' or item[-5:] == '.xlsm'):
26 if item.find("$") != -1:
27 continue
28 merge_excel(item)
29 elif os.path.isdir(item):
30 item = item + '/'
31 get_obj_list(item)
32
33
34 # 获取单个表格的信息
35 def merge_excel(excelName):
36 excelfd = xlrd.open_workbook(excelName)
37 for sheet in excelfd.sheet_names():
38 if sheet == 'body':
39 print (excelName)
40 sheet_content = excelfd.sheet_by_name(sheet)
41 header = sheet_content.cell(0, 0).value
42 if header == u'高校名称': # 去掉标题行
43 row = 1
44 else:
45 row = 0
46 while row < sheet_content.nrows:
47 college = sheet_content.cell(row, 0).value
48 institute = sheet_content.cell(row, 1).value
49 built_time = sheet_content.cell(row, 2).value
50 overview = sheet_content.cell(row, 3).value
51 item = [college, institute, built_time, overview]
52 excel_content.append(item)
53 row += 1
54
55
56 # 将获取到的表格信息保存到一个表格中
57 def save_info():
58 workbook = xlwt.Workbook(encoding = 'ascii')
59 worksheet = workbook.add_sheet('merge_info')
60 style = xlwt.XFStyle() # 初始化样式
61 font = xlwt.Font() # 为样式创建字体
62 font.name = 'Times New Roman'
63 font.bold = True # 黑体
64 font.underline = True # 下划线
65 font.italic = True # 斜体字
66 style.font = font # 设定样式
67 worksheet.write(0, 0, '高校名称')
68 worksheet.write(0, 1, '学院名称')
69 worksheet.write(0, 2, '成立时间')
70 worksheet.write(0, 3, '人工智能学院、人工智能研究院建设情况')
71
72 for i, item in enumerate(excel_content):
73 for j in range(4): #多添加一列(序号)
74 worksheet.write(i+1, j, item[j])
75 workbook.save(output_file) # 保存文件
76
77
78 if __name__ == "__main__":
79
80 if os.path.exists(output_file):
81 os.remove(output_file)
82
83 get_obj_list('./test/')
84 save_info()

4、输出结果

这是我手动调整过表格格式的结果。至此,需要实现的功能都实现了。

python-将多个表格的信息合并到一个表格中的更多相关文章

  1. Python将多个excel表格合并为一个表格

    Python将多个excel表格合并为一个表格 生活中经常会碰到多个excel表格汇总成一个表格的情况,比如你发放了一份表格让班级所有同学填写,而你负责将大家的结果合并成一个.诸如此类的问题有很多.除 ...

  2. Python自动化办公:27行代码实现将多个Excel表格内容批量汇总合并到一个表格

    序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 老板最近越来越过分了,快下班了发给我几百个表格让我把内容合并到一个表格内去.还好我会Python,分分钟 ...

  3. Python:27行代码实现将多个Excel表格内容批量汇总合并到一个表格

    序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 老板最近越来越过分了,快下班了发给我几百个表格让我把内容合并到一个表格内去.还好我会Python,分分钟 ...

  4. python 将列表里的字典元素合并为一个字典

    python 将列表里的字典元素合并为一个字典 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...

  5. MySQL 合并查询join 查询出的不同列合并到一个表中

    为了求解问题时思路清晰,建议先分列查询,再将列合并到一个表中,这样相当于将复杂问题拆解为简单问题,一一解决.优点是避免所有问题混在一起,代码逻辑清晰,可迁移性强,下次遇到类似的查询问题能快速求解,缺点 ...

  6. 将多个sass文件合并到一个文件中

    将多个sass文件合并到一个文件中 应用场景:制作angular npm包的时候,定义的一些全局样式,自定义主题色这类的情况下,多个scss文件会要合并成一个文件并写到dist文件里,发布到仓库中. ...

  7. MySQL 合并查询union 查询出的行合并到一个表中

    在合并查询中,尤其是二分类的情况,在查询结果是相同列名的时候可以考虑合并查询.先查询出行的结果,再使用union或者union all合并查询结果. 另外如果 union 和 order by 一起使 ...

  8. Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码

    通过 正则表达式 来获取一个网页中的所有的 URL链接,并下载这些 URL链接 的源代码 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 ...

  9. 如何快速将多个excel表格的所有sheet合并到一个sheet中

    1.将需要合并的excel文件放在同一个文件夹下: 2.新建一个excel表格并打开,右键sheet1,查看代码,然后复制下方的代码到代码框里,点击菜单栏中的“运行”–“运行子过程/用户窗体”,等待程 ...

  10. 多个不同的表合并到一个datatable中,repeater在绑定datatable

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...

随机推荐

  1. Vue购物车展示功能

    1.基本购物车 <body> <div id="app"> <div class="container-fluid"> &l ...

  2. 力扣506(java)-相对名次(简单)

    题目: 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分.所有得分都互不相同 . 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高, ...

  3. 阿里云 EMR Delta Lake 在流利说数据接入中的架构和实践

    简介: 为了消灭数据孤岛,企业往往会把各个组织的数据都接入到数据湖以提供统一的查询或分析.本文将介绍流利说当前数据接入的整个过程,期间遇到的挑战,以及delta在数据接入中产生的价值. 背景 流利说目 ...

  4. 连续三年入围 Gartner 容器竞争格局,阿里云容器服务新布局首次公开

    简介: 阿里云连续三年国内唯一入围Gartner容器竞争格局,解读业界'顶流'的产品布局. 近日,国际知名信息技术咨询机构Gartner发布2021年容器竞争格局报告,阿里云成为国内唯一连续三年入选的 ...

  5. 如何基于Dataphin实现敏感数据保护

    ​简介: 在企业的发展过程中,如果不重视敏感数据的保护,和数据安全体系的建设,那么一旦发生了敏感数据泄漏事件,轻则企业口碑受损,业务受影响:重则会直接触法律,受到主管部门的处罚和制裁.本文将以一个最常 ...

  6. [Pholcus] Go项目 Pholcus 编写静态规则文件, 0 到 1

    1. 初始化项目包,go mod init [module-path] 比如:go mod init github.com/abc/efg 2. 新建一个目录放置我们编写的规则 go 文件. 3. m ...

  7. dotnet core 不自动从 https 到 http 的 302 重定向

    本文记录一个已知问题,或者准确来说是设计如此的行为,在 dotnet core 下,无论是 dotnet core 3.1 还是 dotnet 5 或 dotnet 6 或 dotnet 7 等,如果 ...

  8. js原型,原型链(不断补充中)

    1.如何使用构造器? function Person(name, age) { this.name = name; this.age = age; } var man = new Person(&qu ...

  9. SpringBoot获取Bean的工具类

    1.beanName 默认是类名首字母小写 下面的类:beanName = bean1 @Component public class Bean1 { public String getBean1() ...

  10. 20231112多校模拟T2

    题目描述 给你下列7种形状,问恰好填满 \(n*2\) 的方格有多少种方案(每种形状可任意旋转) 后三种形状纯粹是出题人的恶趣味,d用没有 做法一:暴力 不会 做法二:递推 定义: f[i] 为填满 ...