Python办公自动化之文件合并

假如公司须要统计每一个员工的我的信息,制定好模板后,由员工填写,而后发送到综合部进行汇总,在这种状况下,若是公司有上百位员工的信息须要统计,且采用纯手工进行复制粘贴的方式进行汇总,则将是一项耗时费力易错的工做。本文主要以一个简单的小例子,简述如何经过Pyhton进行自动化文件合并。app

涉及知识点

  • xlrd模块:文件的读取
  • xlwt模块:文件的生成

设计思路

  1. 获取指定目录下全部excel格式的文件。
  2. 循环读取Excel文件内容【读取固定的行与列】,将内容暂存内存中。
  3. 将内存中数据,写入到新的Excel文件中,并保存到指定位置。

效果示例

本例为了简化操做,总共有10个须要汇总的文件,以下所示:spa

每个文件采用相同模板,格式一致,以下所示:设计

 

 汇总后的文件,以下所示:3d

核心代码

引入相关的模块,以下所示:excel

1 import xlrd
2 import xlwt
3 import os

读取excel内容,以下所示:code

 1 def read_excel(excel_folder: str):
 2     """
 3     读取Excel文档
 4     :param excel_folder:
 5     :return:
 6     """
 7     excel_files = []  # excel文件列表
 8     excel_contents = []  # excel文件内容
 9     files = os.listdir(path=excel_folder)
10     if len(files) > 0:
11         for file in files:
12             if file.endswith('.xls'):
13                 excel_files.append(file)
14     if len(excel_files) == 0:
15         print('此目录下没有对应的Excel文件')
16     # 循环读取文档
17     for file in excel_files:
18         full_path = os.path.join(excel_folder, file)
19         book = xlrd.open_workbook(filename=full_path)
20         sheet = book.sheet_by_index(sheetx=0)
21         # 取固定位置的值
22         content = {
23             '名称': sheet.cell_value(1, 0),
24             '年纪': sheet.cell_value(1, 1),
25             '性别': sheet.cell_value(1, 2),
26             '籍贯': sheet.cell_value(1, 3)
27         }
28         excel_contents.append(content)
29 
30     return excel_contents

生成Excel内容,以下所示:blog

 1 def write_excel(excel_path: str, excel_contents: list):
 2     """
 3     生成Excel文档
 4     :param excel_path:
 5     :return:
 6     """
 7     if len(excel_contents) == 0:
 8         print('没有须要保存的内容')
 9         return
10     book = xlwt.Workbook(encoding='utf-8')
11     sheet1 = book.add_sheet('统计信息')
12     # 先写标题
13     sheet1.write(0, 0, '名称')
14     sheet1.write(0, 1, '年纪')
15     sheet1.write(0, 2, '性别')
16     sheet1.write(0, 3, '籍贯')
17     i = 1
18     for content in excel_contents:
19         sheet1.write(i, 0, content['名称'])
20         sheet1.write(i, 1, content['年纪'])
21         sheet1.write(i, 2, content['性别'])
22         sheet1.write(i, 3, content['籍贯'])
23         i += 1
24     book.save(excel_path)

总体调用内存

1 excel_folder = r'D:\MyProject\Demo01\TESTEXCEL'
2 excel_path = r'D:\MyProject\Demo01\TESTEXCEL\汇总信息.xls'
3 excel_contents = read_excel(excel_folder)
4 # print(excel_contents)
5 write_excel(excel_path, excel_contents)
6 print('done')

备注

相思utf-8

【做者】王维  【朝代】唐

红豆生南国,春来发几枝。文档

愿君多采撷,此物最相思。