假如公司需要统计每个员工的个人信息,制定好模板后,由员工填写,然后发送到综合部进行汇总,在这种情况下,如果公司有上百位员工的信息需要统计,且采用纯手工进行复制粘贴的方式进行汇总,则将是一项耗时费力易错的工作。本文主要以一个简单的小例子,简述如何通过pyhton进行自动化文件合并。
涉及知识点
- xlrd模块:文件的读取
- xlwt模块:文件的生成
设计思路
1、获取指定目录下所有excel格式的文件。
2、循环读取excel文件内容【读取固定的行与列】,将内容暂存内存中。
3、将内存中数据,写入到新的excel文件中,并保存到指定位置。
效果示例
本例为了简化操作,总共有10个需要汇总的文件,如下所示:
每一个文件采用相同模板,格式一致,如下所示:
汇总后的文件,如下所示:
核心代码
引入相关的模块,如下所示:
1
2
3
|
import xlrd
import xlwt
import os
|
读取excel内容,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
def read_excel(excel_folder: str ):
"""
读取excel文档
:param excel_folder:
:return:
"""
excel_files = [] # excel文件列表
excel_contents = [] # excel文件内容
files = os.listdir(path = excel_folder)
if len (files) > 0 :
for file in files:
if file .endswith( '.xls' ):
excel_files.append( file )
if len (excel_files) = = 0 :
print ( '此目录下没有对应的excel文件' )
# 循环读取文档
for file in excel_files:
full_path = os.path.join(excel_folder, file )
book = xlrd.open_workbook(filename = full_path)
sheet = book.sheet_by_index(sheetx = 0 )
# 取固定位置的值
content = {
'名称' : sheet.cell_value( 1 , 0 ),
'年纪' : sheet.cell_value( 1 , 1 ),
'性别' : sheet.cell_value( 1 , 2 ),
'籍贯' : sheet.cell_value( 1 , 3 )
}
excel_contents.append(content)
return excel_contents
|
生成excel内容,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
def write_excel(excel_path: str , excel_contents: list ):
"""
生成excel文档
:param excel_path:
:return:
"""
if len (excel_contents) = = 0 :
print ( '没有需要保存的内容' )
return
book = xlwt.workbook(encoding = 'utf-8' )
sheet1 = book.add_sheet( '统计信息' )
# 先写标题
sheet1.write( 0 , 0 , '名称' )
sheet1.write( 0 , 1 , '年纪' )
sheet1.write( 0 , 2 , '性别' )
sheet1.write( 0 , 3 , '籍贯' )
i = 1
for content in excel_contents:
sheet1.write(i, 0 , content[ '名称' ])
sheet1.write(i, 1 , content[ '年纪' ])
sheet1.write(i, 2 , content[ '性别' ])
sheet1.write(i, 3 , content[ '籍贯' ])
i + = 1
book.save(excel_path)
|
整体调用
1
2
3
4
5
6
|
excel_folder = r 'd:\myproject\demo01\testexcel'
excel_path = r 'd:\myproject\demo01\testexcel\汇总信息.xls'
excel_contents = read_excel(excel_folder)
# print(excel_contents)
write_excel(excel_path, excel_contents)
print ( 'done' )
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/fengershishe/article/details/119581034