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. 【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG

    问题描述 看见一个有趣的页面,可以把输入的文字信息,直接输出SVG图片,还可以实现动图模式. 示例URL:  https://readme-typing-svg.demolab.com/?font=F ...

  2. 用fpga实现1G Eth TCP&UDP硬件协议栈

    用fpga实现的1G 以太网硬件协议栈,属于轻的协议栈

  3. vue-manage-system 版本更新,让开发更加简单

    vue-manage-system 近期进行了一次版本升级,主要是支持了更多功能.升级依赖版本和优化样式,并且上线了官方文档网站,大部分功能都有文档或者使用示例,更加适合新手上手开发,只需要根据实际业 ...

  4. 前沿分享|阿里云资深技术专家 魏闯先:AnalyticDB PostgreSQL年度新版本发布

    ​简介: 本篇内容为2021云栖大会-云原生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云资深技术专家 魏闯先关于"AnalyticDB PostgreSQL年度新版本发布&qu ...

  5. 划重点|iOS15正式发布, 全新的通知推送系统,你必须要知道!

    ​简介: 今年友盟+联合达摩院决策智能实验室讲算法技术,推出国内首个智能推送功能,帮助产品运营人员实现一键式触达的精细化运营.通过精心打磨的在线学习与优化算法,对推送人群与推送文案进行精准匹配,最大化 ...

  6. WPF 使用 ManipulationDemo 工具辅助调试设备触摸失效问题

    本文将和大家介绍我所在的团队开源的 ManipulationDemo 工具.通过 ManipulationDemo 工具可以提升调试设备触摸失效的效率 此工具在 GitHub 上完全开源,请看 htt ...

  7. dotnet 警惕 Assembly.Location 返回空

    在大部分情况下,获取当前所运行的应用程序的所在路径时,常用的就是 Assembly.Location 属性,按照之前的经验,使用 Assembly.Location 是最为稳定的做法,然而在 dotn ...

  8. dotnet 将控制台 Console.WriteLine 内容输出到文件

    很多伙伴喜欢使用 Console.WriteLine 打日志,也许是打起来顺手.打完了之后,又想着,要是能够输出到本机文件那就更好了.既然很多伙伴都有这个想法,那 dotnet 自然就是有方便的方法让 ...

  9. 2018-2-13-C#-获得设备usb信息

    title author date CreateTime categories C# 获得设备usb信息 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...

  10. .NET Emit 入门教程:第七部分:实战项目1:将 DbDataReader 转实体

    前言: 经过前面几个部分学习,相信学过的同学已经能够掌握 .NET Emit 这种中间语言,并能使得它来编写一些应用,以提高程序的性能. 随着 IL 指令篇的结束,本系列也已经接近尾声,在这接近结束的 ...