码迷,mamicode.com
首页 > 编程语言 > 详细

python-将多个表格的信息合并到一个表格中

时间:2020-04-04 16:12:04      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:获取   信息   mes   ascii   目录   test   time   alt   添加   

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-将多个表格的信息合并到一个表格中

标签:获取   信息   mes   ascii   目录   test   time   alt   添加   

原文地址:https://www.cnblogs.com/mrlayfolk/p/12632227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!