python-将多个表格的信息合并到一个表格中
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-将多个表格的信息合并到一个表格中的更多相关文章
- Python将多个excel表格合并为一个表格
Python将多个excel表格合并为一个表格 生活中经常会碰到多个excel表格汇总成一个表格的情况,比如你发放了一份表格让班级所有同学填写,而你负责将大家的结果合并成一个.诸如此类的问题有很多.除 ...
- Python自动化办公:27行代码实现将多个Excel表格内容批量汇总合并到一个表格
序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 老板最近越来越过分了,快下班了发给我几百个表格让我把内容合并到一个表格内去.还好我会Python,分分钟 ...
- Python:27行代码实现将多个Excel表格内容批量汇总合并到一个表格
序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 老板最近越来越过分了,快下班了发给我几百个表格让我把内容合并到一个表格内去.还好我会Python,分分钟 ...
- python 将列表里的字典元素合并为一个字典
python 将列表里的字典元素合并为一个字典 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...
- MySQL 合并查询join 查询出的不同列合并到一个表中
为了求解问题时思路清晰,建议先分列查询,再将列合并到一个表中,这样相当于将复杂问题拆解为简单问题,一一解决.优点是避免所有问题混在一起,代码逻辑清晰,可迁移性强,下次遇到类似的查询问题能快速求解,缺点 ...
- 将多个sass文件合并到一个文件中
将多个sass文件合并到一个文件中 应用场景:制作angular npm包的时候,定义的一些全局样式,自定义主题色这类的情况下,多个scss文件会要合并成一个文件并写到dist文件里,发布到仓库中. ...
- MySQL 合并查询union 查询出的行合并到一个表中
在合并查询中,尤其是二分类的情况,在查询结果是相同列名的时候可以考虑合并查询.先查询出行的结果,再使用union或者union all合并查询结果. 另外如果 union 和 order by 一起使 ...
- Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码
通过 正则表达式 来获取一个网页中的所有的 URL链接,并下载这些 URL链接 的源代码 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 ...
- 如何快速将多个excel表格的所有sheet合并到一个sheet中
1.将需要合并的excel文件放在同一个文件夹下: 2.新建一个excel表格并打开,右键sheet1,查看代码,然后复制下方的代码到代码框里,点击菜单栏中的“运行”–“运行子过程/用户窗体”,等待程 ...
- 多个不同的表合并到一个datatable中,repeater在绑定datatable
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...
随机推荐
- 力扣640(java)-求解方程(中等)
题目: 求解一个给定的方程,将x以字符串 "x=#value" 的形式返回.该方程仅包含 '+' , '-' 操作,变量 x 和其对应系数. 如果方程没有解,请返回 "N ...
- ARMS实践|日志在可观测场景下的应用
简介: 在实际生产中,通过灵活组合文内几种使用方式,运维团队可以很好地排除日常观测.故障定位过程中的干扰因素,更快的定界甚至定位问题根因. 作者:陈陈 日志在可观测场景下的应用 随着 IT 架 ...
- 深入理解C++中的RVO
前言 考虑存在这样一个类如HeavyObject,其拷贝赋值操作比较耗时,通常你在使用函数返回这个类的一个对象时会习惯使用哪一种方式?或者会根据具体场景选择某一种方式? // style 1 Heav ...
- 揭秘 cache 访问延迟背后的计算机原理
简介:本文介绍如何测试多级 cache 的访存延迟,以及背后蕴含的计算机原理. CPU 的 cache 往往是分多级的金字塔模型,L1 最靠近 CPU,访问延迟最小,但 cache 的容量也最小.本 ...
- 【实践案例】Databricks 数据洞察 Delta Lake 在基智科技(STEPONE)的应用实践
简介: 获取更详细的 Databricks 数据洞察相关信息,可至产品详情页查看:https://www.aliyun.com/product/bigdata/spark 作者 高爽,基智科技数据中心 ...
- HarmonyOS 实战开发-Worker子线程中解压文件
介绍 本示例介绍在Worker子线程使用@ohos.zlib提供的zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作,解压成功后将解压路径返回主线程,获取解压文件列表. 效果 ...
- VUE知识体系、VUE面试题
1. computed(计算属性)和方法有什么区别? 计算属性本质上是包含 getter 和 setter 的方法 当获取计算属性时,实际上是在调用计算属性的 getter 方法.vue 会收集计算属 ...
- Educational Codeforces Round 160 (Rated for Div. 2)
A 直接模拟,注意细节 #include<bits/stdc++.h> #define ll long long using namespace std; ll p[15] = {1}; ...
- 九、DataArts Studio
功能总览: 基本概念: 主题设计:通过分层架构表达对数据的分类和定义,帮助理清数据资产,明确业务领域和业务对象的关联关系. 主题域分组:基于业务场景对主题域分组. 主题域:互不重叠数据的高层面的数据分 ...
- 大模型高效微调详解-从Adpter、PrefixTuning到LoRA
一.背景 目前NLP主流范式是在大量通用数据上进行预训练语言模型训练,然后再针对特定下游任务进行微调,达到领域适应(迁移学习)的目的. 指令微调是预训练语言模型微调的主流范式 其目的是尽量让下游任务的 ...