网络编程
位置:首页>> 网络编程>> Python编程>> python实现自动化之文件合并

python实现自动化之文件合并

作者:Alan.hsiang  发布时间:2023-12-27 07:11:37 

标签:python,文件合并

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

涉及知识点

  • xlrd模块:文件的读取

  • xlwt模块:文件的生成

设计思路

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

效果示例

本例为了简化操作,总共有10个需要汇总的文件,如下所示:

python实现自动化之文件合并

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

python实现自动化之文件合并

汇总后的文件,如下所示:

python实现自动化之文件合并

核心代码

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


import xlrd
import xlwt
import os

读取excel内容,如下所示:


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内容,如下所示:


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)

整体调用


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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com