python 辦公自動(dòng)化——基于pyqt5和openpyxl統(tǒng)計(jì)符合要求的名單
首先,那肯定是用python獲取學(xué)校發(fā)下來的未學(xué)習(xí)名單,但是我忘記我之前用什么來操作辦公軟件了(最后項(xiàng)目作出來的時(shí)候才想起來是pandas),我就上網(wǎng)搜了一下,試了很多庫但是都不支持xlsx文件格式(只支持最老版本的xls),最終openpyxl成功的讀取了xlsx文件,于是我就用了openpyxl庫來讀取文件,下面是python代碼
studyedstudent = [] wb = load_workbook(xlsx_path) sheets = wb.worksheets # 獲取當(dāng)前所有的sheet sheet1 = sheets[0] for col in sheet1['A']: studyedstudent.append(col.value)
這樣studyedstudent列表中就是本期已學(xué)習(xí)的名單了
我又向團(tuán)支書要了我們班的團(tuán)員表,同樣用該方法讀出了我們班的團(tuán)員,我將他放入一個(gè)列表中,當(dāng)常量來用。
剩下的就是遍歷我們班團(tuán)員,看一下團(tuán)員是否在已學(xué)習(xí)的名單中,如果不在,則將該團(tuán)員放入另一個(gè)列表(未學(xué)習(xí)名單中)
下面是python代碼
wb = load_workbook(xlsx_path) sheets = wb.worksheets # 獲取當(dāng)前所有的sheet myclassstudent = ['陳榮森', '鄧京銳', '鄧文凱', '何江偉', '何錦勝', '李春江', '李錦科', '廖金威', '廖鈞濠', '林榮添', '劉繼洪', '羅煒芊', '麥洋華', '彭浩林', '唐愛萍', '涂駿', '冼東潮', '肖華鋒', '謝澤琛', '楊?yuàn)^發(fā)', '張杰森', '鄭佳浩', '植美麟', '周天寶'] # 24團(tuán)員 # print(len(myclassstudent)) # 獲取第一張sheet sheet1 = sheets[0] studyedstudent = [] for col in sheet1['A']: studyedstudent.append(col.value) # print(studyedstudent) unstudyedstudent = [] for i in myclassstudent: if i not in studyedstudent: unstudyedstudent.append(i)
這樣一波操作,unstudystudent中就是要給團(tuán)支書的未學(xué)習(xí)名單了!
但是鑒于使用者可能沒有python環(huán)境,所以我決定將unstudystudent寫入一個(gè)txt文件中,并且將代碼打包成exe文件。
下面是代碼
wb = load_workbook(xlsx_path) sheets = wb.worksheets # 獲取當(dāng)前所有的sheet myclassstudent = ['陳榮森', '鄧京銳', '鄧文凱', '何江偉', '何錦勝', '李春江', '李錦科', '廖金威', '廖鈞濠', '林榮添', '劉繼洪', '羅煒芊', '麥洋華', '彭浩林', '唐愛萍', '涂駿', '冼東潮', '肖華鋒', '謝澤琛', '楊?yuàn)^發(fā)', '張杰森', '鄭佳浩', '植美麟', '周天寶'] # 24團(tuán)員 # print(len(myclassstudent)) # 獲取第一張sheet sheet1 = sheets[0] studyedstudent = [] for col in sheet1['A']: studyedstudent.append(col.value) # print(studyedstudent) unstudyedstudent = [] for i in myclassstudent: if i not in studyedstudent: unstudyedstudent.append(i) file = open('大學(xué)習(xí)未完成名單.txt', 'w') for i in unstudyedstudent: file.write(i) file.write('\n') file.close()
打包需要先下載一個(gè)打包的庫打開cmd 輸入“pip install Pyinstaller”即可,然后再cmd中進(jìn)入要打包的文件夾,輸入“Pyinstaller -F main.py”等待打包即可,main.py是我要打包的文件名字。
但是這是個(gè)小黑板使用起來不太方便,我決定做一個(gè)GUI,我就用了我最近在學(xué)的pyqt5。
首先把main文件封裝成函數(shù),下面是main.py的代碼
from openpyxl import load_workbook def getnostudytxt(xlsx_path): wb = load_workbook(xlsx_path) sheets = wb.worksheets # 獲取當(dāng)前所有的sheet myclassstudent = ['陳榮森', '鄧京銳', '鄧文凱', '何江偉', '何錦勝', '李春江', '李錦科', '廖金威', '廖鈞濠', '林榮添', '劉繼洪', '羅煒芊', '麥洋華', '彭浩林', '唐愛萍', '涂駿', '冼東潮', '肖華鋒', '謝澤琛', '楊?yuàn)^發(fā)', '張杰森', '鄭佳浩', '植美麟', '周天寶'] # 24團(tuán)員 # print(len(myclassstudent)) # 獲取第一張sheet sheet1 = sheets[0] studyedstudent = [] for col in sheet1['A']: studyedstudent.append(col.value) # print(studyedstudent) unstudyedstudent = [] for i in myclassstudent: if i not in studyedstudent: unstudyedstudent.append(i) file = open('大學(xué)習(xí)未完成名單.txt', 'w') for i in unstudyedstudent: file.write(i) file.write('\n') file.close() return unstudyedstudent
接下來是寫界面,不妨命名為ui.py,下面是代碼。
import sys from PyQt5.QtWidgets import (QWidget, QTextEdit, QFileDialog, QApplication, QHBoxLayout, QVBoxLayout, QPushButton) from PyQt5.QtGui import QIcon import main class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): okButton = QPushButton("選擇文件") self.textEdit = QTextEdit() okButton.clicked.connect(self.showDialog) vvbox = QVBoxLayout() vvbox.addWidget(okButton) vvbox.addStretch(1) hbox = QHBoxLayout() hbox.addLayout(vvbox) hbox.addWidget(self.textEdit) vbox = QVBoxLayout() vbox.addLayout(hbox) self.setLayout(vbox) self.setGeometry(300, 300, 350, 300) self.setWindowTitle("青年大學(xué)習(xí)獲取未學(xué)習(xí)名單") self.setWindowIcon(QIcon("head.ico")) self.show() def showDialog(self): # 彈出文件選擇器 fname = QFileDialog.getOpenFileName(self, "Open file") # 如果選擇了文件 if fname[0]: # 打開第一個(gè)文件 f = open(fname[0], "r") print(f.name) mylist = main.getnostudytxt(f.name) print(mylist) for i in mylist: self.textEdit.append(i) if __name__ == "__main__": app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
最后就是打包了,這次要打包的是窗口文件,所以打包的指令中要多加一個(gè)-w,而且我給打包后的文件添加了一個(gè)圖標(biāo)(head.ico),所以輸入“Pyinstaller -F -w -i head.ico ui.py”。
最終項(xiàng)目就做完了!
代碼我已經(jīng)提交到github上,如果想瞅瞅源碼可以上我的github上看看:xddno1/python_student_big_study: 青年大學(xué)習(xí)檢查未學(xué)習(xí)名單的python腳本 (github.com)
最后還有一個(gè)小bug,那就是pyqt5窗口的圖標(biāo)不展示的問題,這個(gè)有知道的大佬還請(qǐng)指出解決辦法!
以上就是python 辦公自動(dòng)化——基于pyqt5和openpyxl統(tǒng)計(jì)符合要求的名單的詳細(xì)內(nèi)容,更多關(guān)于python 自動(dòng)化統(tǒng)計(jì)名單的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Jupyter Notebook 如何修改字體和大小以及更改字體樣式
這篇文章主要介紹了Jupyter Notebook 如何修改字體和大小以及更改字體樣式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Python趣味實(shí)例,實(shí)現(xiàn)一個(gè)簡單的抽獎(jiǎng)刮刮卡
這篇文章主要介紹了Python如何實(shí)現(xiàn)一個(gè)簡單的抽獎(jiǎng)刮刮卡,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07Anaconda+VSCode配置tensorflow開發(fā)環(huán)境的教程詳解
Anaconda是一個(gè)開源的python發(fā)行版本,是現(xiàn)在比較流行的python數(shù)據(jù)科學(xué)平臺(tái),可以對(duì)python的科學(xué)包做到有效管理。這篇文章主要介紹了Anaconda+VSCode配置tensorflow開發(fā)環(huán)境,需要的朋友可以參考下2020-03-03淺談python中的@以及@在tensorflow中的作用說明
這篇文章主要介紹了淺談python中的@以及@在tensorflow中的作用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03Flask框架實(shí)現(xiàn)給視圖函數(shù)增加裝飾器操作示例
這篇文章主要介紹了Flask框架實(shí)現(xiàn)給視圖函數(shù)增加裝飾器操作,結(jié)合實(shí)例形式分析了flask框架視圖添加裝飾器的具體操作方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-07-07Python?sklearn庫三種常用編碼格式實(shí)例
這篇文章主要為大家介紹了Python?sklearn庫三種常用編碼格式實(shí)例展示,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Pytorch Tensor基本數(shù)學(xué)運(yùn)算詳解
今天小編就為大家分享一篇Pytorch Tensor基本數(shù)學(xué)運(yùn)算詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12django中使用POST方法獲取POST數(shù)據(jù)
這篇文章主要介紹了django中使用POST方法獲取POST數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08python 如何執(zhí)行控制臺(tái)命令與操作剪切板
這篇文章主要介紹了python 如何執(zhí)行控制臺(tái)命令與操作剪切板,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05