Python办公实战!​按姓名拆分Excel为单独文件,微信自动发给相应联系人

简介: 用起来

CoderWanFeng

大家好,这里是Python程序员晚枫,今天给大家分享一篇读者的来稿:Python + Excel自动化办公,在工作中的实际应用

欢迎大家总结pip install python-office的使用经验,联系我投稿哟~

一、前言

最近遇到一个需求:

  • 把员工信息汇总表excel,按员工姓名拆分成单独的excel,新excel以员工姓名命名,里面第一行是表头,第二行是员工信息。
  • 然后把excel通过微信单独发送给每位员工。
这个需求适用于发送月度工资表、学校学生信息统计等场景。

在B站上找到@程序员晚枫,大神制作的python-office库可以完美实现这个功能,在此拜谢,给大佬端茶。动手操作过程中遇到一些困难,把我的解决思路写下,供大家参考。

二、准备环境

1、请适用python 3.8.9 64位版本

其他版本在安装python-office库时会遇到各种问题,解决起来费时费力,建议直接使用python 3.8.9 64位版本,只需要在pycharm上搭建一个新环境,就可以轻松安装使用了。

2、安装python-office

pip install python-office

3、还会使用openpyxl这个库,用来处理excel。

三、思路分析

1、读取excel

openpyxl库的load_workbook()读取相应的表格,表单和单元格都用列表的形式使用就行,例如['Sheet1'].['B1']

2、删除excel不用的行

openpyxl库的删除整行命令是ws.delete_rows(),括号中输入行号,删除行时要注意从后往前删除,否则行号会出现错误:

比如删除了第二行后要删第三行,这时第三行已经变成了第二行,给删除造成麻烦,从后往前删就不会出现这个问题。

这里会用到最大行,命令为ws.max_row,接着用for遍历,需要倒着数,for i in range(ws.max_row, 1, -1),这样就从最后一行开始遍历,一直遍历到第二行,把不想要的用ws.delete_rows(i)删除就行。

3、保存成单独excel。

wb.save(),括号中写新的文件名

4、利用python-office库发送微信消息。

只需要用到一行命令,简单背后的复杂都由python-office库的开发者帮我们封装好了,吃水不忘挖井人,给晚枫大神献上膝盖。

office.wechat.send_file(who=, file=),分别在括号里写上微信昵称和文件地址。

四、代码展示

上代码~

import openpyxl, office #导入两个库,第一个处理excel,第二个用到微信发消息功能,第二个库还有很多强大便捷的功能。
 
wb = openpyxl.load_workbook('C:/CoderWanFeng/./././???.xlsx') #括号中写汇总文件地址
ws = wb['Sheet1']              #获取excel表单
Names = ws['B']                #获取表单中第二列,我的表单第二列是微信昵称,可以根据实际进行调整
max_row = ws.max_row           #获取excel的最大行数
 
for Name in Names:             #第5行代码获得的昵称需要遍历
    Name = Name.value          #遍历出来的是元祖,需要用value进行取值
    if Name == '程序员晚枫':    #我的excel B1单元格写的是程序员晚枫,大家可以根据实际调整
        continue
    else:
        wb = openpyxl.load_workbook('C:/Users/./././???.xlsx')
        ws = wb['Sheet1']
        for j in range(max_row, 1, -1):   #倒着遍历,方便删除时不错序
            if ws[f'B{j}'].value != Name:
                ws.delete_rows(j)         #删除行
        file_path = f'C:/Users/./././{Name}.xlsx'  #重命名
        wb.save(file_path)  #保存excel
        office.wechat.send_file(who=Name, file=file_path)  #通过微信发送文件,分别在括号里写上微信昵称和文件地址。

相关文章
|
14天前
|
Python
按条件将Excel文件拆分到不同的工作表
使用Python的pandas库,可以轻松将Excel文件按条件拆分到不同的工作表中。本文通过一个示例代码展示了如何生成一个包含总成绩表和三个班级表的Excel文件。代码首先创建了一个包含学生姓名、班级和各科成绩的数据框,然后按班级分组,将每个班级的数据分别写入不同的工作表。最后,生成的Excel文件将包含四个工作表,分别为总成绩表和三个班级的成绩表。
25 6
按条件将Excel文件拆分到不同的工作表
|
13天前
|
Python
批量将不同的工作簿合并到同一个Excel文件
本文介绍如何使用Python的`pandas`库批量合并不同工作簿至同一Excel文件。通过模拟生成三个班级的成绩数据,分别保存为Excel文件,再将这些文件合并成一个包含所有班级成绩的总成绩单。步骤包括安装必要库、生成数据、保存与合并工作簿。
23 6
|
13天前
|
Python
按条件将Excel文件拆分到不同的工作表
使用Python的pandas库,可以轻松将Excel文件按条件拆分为多个工作表。本文通过一个具体示例,展示了如何根据学生班级将成绩数据拆分到不同的工作表中,并生成一个包含总成绩表和各班级成绩表的Excel文件。代码简洁明了,适合初学者学习和应用。
28 6
|
22天前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
25 1
|
1月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
45 4
|
2月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
83 6
|
2月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
2月前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
184 0
|
2月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
89 0
|
2月前
|
存储 Python
Python实战项目Excel拆分与合并——合并篇
Python实战项目Excel拆分与合并——合并篇
65 0