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. SVM简单分类的使用 sklearn机器学习

    # sklearn 库中导入 svm 模块 from sklearn import svm # 定义三个点和标签 X = [[2, 0], [1, 1], [2,3]] y = [0, 0, 1] # ...

  2. 如何将传统 Web 框架迁移部署到 Serverless 架构?

    简介: 与其说 Serverless 架构是一个新的概念,不如说它是一种全新的思路,一种新的编程范式. 与其说 Serverless 架构是一个新的概念,不如说它是一种全新的思路,一种新的编程范式. ...

  3. 将 Terraform 生态粘合到 Kubernetes 世界

    简介: 为了更高效,统一的管理云服务,IaC 思想近年来盛行,其中 Terrafrom 更是成功得到了几乎所有的云厂商的采纳和支持.以 Terrafrom 模型为核心的云服务 IaC 生态已经形成.然 ...

  4. Apsara Stack 技术百科 | 如何「场景化」的企业上云

    简介: 企业上云离不开数据和业务上云,如何在确保安全的前提下,低成本高效率的平滑上云,在云上又能真正解决哪些实际业务问题?混合云君今天给大家讲讲最经典的三个场景~ 随着"十四五"规 ...

  5. 网易:Flink + Iceberg 数据湖探索与实践

    导读:今天主要和大家交流的是网易在数据湖 Iceberg 的一些思考与实践.从网易在数据仓库建设中遇到的痛点出发,介绍对数据湖 Iceberg 的探索以及实践之路. 主要内容包括: 数据仓库平台建设的 ...

  6. 最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控

    ​简介:SpringBoot 微服务的开发.发布与部署只占其生命周期的一小部分,应用和系统运维才是重中之重.而运维过程中,监控工作更是占据重要位置.那么,为了对系统的状态进行持续地观测,面向Sprin ...

  7. Delta Lake在Soul的应用实践

    简介: 传统离线数仓模式下,日志入库前首要阶段便是ETL,我们面临如下问题:天级ETL任务耗时久,影响下游依赖的产出时间:凌晨占用资源庞大,任务高峰期抢占大量集群资源:ETL任务稳定性不佳且出错需凌晨 ...

  8. [GPT] 监测输入框被 js 设置了值 ?input 输入框被设置了 value 值,但是没有触发 change 事件?

    1. input 输入框被设置了 value 值,但是没有触发 change 事件 ? 如果输入框的 value 值是通过 JavaScript 代码直接设置的,那么不会触发 change 事件,这是 ...

  9. [FAQ] 如何从 svg 字符串创建 SVGElement

      HTML 部分: <div style="display: none" id="svgCon"></div> JS 部分: cons ...

  10. 【Oracle】Oracle数据库多实例安装

    需求:因为需要从RAC的多实例迁移至单虚拟机的多实例.因此,简要概述一下,如何安装数据库的多实例. 不管是Oracle 11g还是10g的多实例,其基本思路都是一致的. 1.调用dbca 在root账 ...