• Python办公自动化之文件合并


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

    涉及知识点

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

    设计思路

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

    效果示例

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

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

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

    核心代码

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

    1 import xlrd
    2 import xlwt
    3 import os

    读取excel内容,如下所示:

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

     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:MyProjectDemo01TESTEXCEL'
    2 excel_path = r'D:MyProjectDemo01TESTEXCEL汇总信息.xls'
    3 excel_contents = read_excel(excel_folder)
    4 # print(excel_contents)
    5 write_excel(excel_path, excel_contents)
    6 print('done')

    备注

    相思

    【作者】王维 【朝代】唐

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

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


    作者:Alan.hsiang
    出处:http://www.cnblogs.com/hsiang/
    本文版权归作者和博客园共有,写文不易,支持原创,欢迎转载【点赞】,转载请保留此段声明,且在文章页面明显位置给出原文连接,谢谢。

  • 相关阅读:
    23种设计模式彩图
    Win10间歇性卡顿
    RDMA
    mii-tool与ethtool的用法详解
    linux下模拟CPU占用100%小程序
    Linux SNMP 监控一些常用OID
    SNMP协议介绍
    set排序(个人模版)
    TSP(个人模版)
    树的重心(个人模版)
  • 原文地址:https://www.cnblogs.com/hsiang/p/15126091.html
Copyright © 2020-2023  润新知