利用Python将多个Excel文档合并到一个文档

需求场景

现在,假设你是公司的人力资源管理部门的一名员工,或者是一名行政管理员工,需要对公司本年度的技术分享。因此,你需要发送一个Excel文档技术分享报名表模板给到公司各位同事,让公司的同事自行填写。填写完成后,你需要将每一位同事返回的Excel文档合并成一个文档。

模板文件

下图为人力资源员工或行政人员发给公司各位同事的报名表文档。

技术分享报名报模板

功能代码

#!/usr/bin/env pythonimport osimport globimport openpyxlimport pandas as pd# 合并多个Excel文档def merge_xlsx_files(xlsx_files):    # 获取第一个文档中的表格    wb = openpyxl.load_workbook(xlsx_files[0])    ws = wb.active    ws.title = "merged result"    # 遍历其他文件中的报名表    for filename in xlsx_files[1:]:        workbook = openpyxl.load_workbook(filename)        sheet = workbook.active        # 利用iter_rows函数忽略报名表中的首行内容        for row in sheet.iter_rows(min_row=2):            # 通过列表推到获取表名中的数据            values = [cell.value for cell in row]            if values == None:                print(values)            # 将数据添加到汇总表的末尾            ws.append(values)    return wb# 获取指定目录下所有的Excel文件def get_all_xlsx_files(path):    # 通过glob获取指定目录下所有Excel文件    xlsx_files = glob.glob(os.path.join(path, '*.xlsx'))    # 按照文件名排序    sorted(xlsx_files, key=str.lower)    return xlsx_files#删除空行def del_none_line(xlsx_files):    df = pd.read_excel(xlsx_files)    df1=df.dropna(how='all', thresh=None, subset=None, inplace=False)    df1.to_excel('megred_form.xlsx',index=False)def main():    xlsx_files = get_all_xlsx_files(os.path.dirname(os.path.abspath(__file__)))    wb = merge_xlsx_files(xlsx_files)    wb.save('megred_form.xlsx')    del_none_line('megred_form.xlsx')if __name__ == '__main__':    main()

为执行完程序后,合并文档的效果

表格合并后执行结果

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章