Python辦公實戰!​按姓名拆分Excel為單獨文件,微信自動發給相應聯繫人

語言: CN / TW / HK

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)  #通過微信發送文件,分別在括號裏寫上微信暱稱和文件地址。