基于PyQt5制作Excel文件數據去重小工具_第1頁
基于PyQt5制作Excel文件數據去重小工具_第2頁
基于PyQt5制作Excel文件數據去重小工具_第3頁
基于PyQt5制作Excel文件數據去重小工具_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第基于PyQt5制作Excel文件數據去重小工具form.addRow(self.file_paths,self.file_paths_btn)

form.addRow(self.colums_label,self.colums_text)

self.work=DataWork(self)

self.work.trigger.connect(self.update_log)

self.work.finished.connect(self.finished)

vbox=QVBoxLayout()

self.start_btn=QPushButton()

self.start_btn.setText('開始執行')

self.start_btn.clicked.connect(self.start_btn_click)

vbox.addLayout(form)

vbox.addWidget(self.start_btn)

hbox=QHBoxLayout()

hbox.addWidget(self.brower)

hbox.addLayout(vbox)

self.setLayout(hbox)

deffile_paths_btn_click(self):

paths=QFileDialog.getOpenFileNames(self,'選擇文件',os.getcwd(),'ExcelFiles(*.xlsx)')

files=paths[0]

path_strs=''

forfileinfiles:

path_strs=path_strs+file+';'

self.file_paths.setText(path_strs)

ifself.file_paths.text().strip()!='':

self.update_log('已經完成批文件路徑加載!')

else:

self.update_log('沒有選擇任何文件!')

defsave_dir_btn_click(self):

directory=QFileDialog.getExistingDirectory(self,'選擇文件夾',os.getcwd())

self.save_dir.setText(directory)

defupdate_log(self,text):

cursor=self.brower.textCursor()

cursor.movePosition(QTextCursor.End)

self.brower.append(text)

self.brower.setTextCursor(cursor)

self.brower.ensureCursorVisible()

defstart_btn_click(self):

self.start_btn.setEnabled(False)

self.work.start()

deffinished(self,finished):

iffinishedisTrue:

self.start_btn.setEnabled(True)

創建子線程,處理業務邏輯(清理Excel重復文件)

classDataWork(QThread):

trigger=pyqtSignal(str)

finished=pyqtSignal(bool)

def__init__(self,parent=None):

super(DataWork,self).__init__(parent)

self.parent=parent

self.working=True

def__del__(self):

self.working=False

self.wait()

defrun(self):

self.trigger.emit('啟動批量處理子線程...')

file_paths=self.parent.file_paths.text().strip()

colums_text=self.parent.colums_text.text().strip()

colums=[]

if','incolums_text:

colums=colums_text.split(',')

else:

colums.append(colums_text)

self.trigger.emit('獲取配置項完成!')

forfileinfile_paths.split(';'):

iffile.strip()!='':

web_sheet=pxl.load_workbook(file)

sheets=web_sheet.sheetnames

print(file)

new_file=file.split('.')[0]+'_已去重.'+file.split('.')[1]

print(new_file)

writer=pd.ExcelWriter(new_file)

forsheetinsheets:

sheet_name=sheet.title()

print(sheet_name)

self.trigger.emit('準備處理工作表名稱:'+str(sheet.title()))

data_frame=pd.read_excel(file,sheet_name=sheet_name)

print(data_frame)

repe=data_frame.duplicated(subset=colums)

repe=repe[repe]

print(data_frame.iloc[repe.index])

res=data_frame.drop_duplicates(subset=colums)

print(res)

self.trigger.emit(str(sheet.title())+':已清除')

res.to_excel(writer,sheet_name,index=False)

writer.save()

else:

self.trigger.emit('當前文件路徑為空,繼續...')

self.trigger.emit('數據處理完成...')

self.finished.emit(True)

使用主函數啟動整個應用

if__name__=='__main__':

app=QApplication(sys.argv)

w=CandyWindow.createWindow(EDataDel(),theme='blueGreen',

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論