日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python實(shí)現(xiàn)Excel自動(dòng)分組合并單元格

瀏覽:173日期:2022-06-27 13:11:47

大家好,我們經(jīng)常會(huì)有這樣的需求。比如下圖

Python實(shí)現(xiàn)Excel自動(dòng)分組合并單元格

我們需要把同一個(gè)省份的合并起來,如下圖的效果

Python實(shí)現(xiàn)Excel自動(dòng)分組合并單元格

如何實(shí)現(xiàn)呢,這是原有的df

Python實(shí)現(xiàn)Excel自動(dòng)分組合并單元格

直觀的操作是這樣的:

df.to_excel(’test.xlsx’,index=False)from openpyxl import load_workbookwb=load_workbook(’test.xlsx’)ws=wb.active()ws.merge_cells(start_row=2,end_row=8,start_column=1,end_column=1)ws.merge_cells(start_row=2,end_row=8,start_column=2,end_column=2)ws.merge_cells(start_row=9,end_row=14,start_column=1,end_column=1)ws.merge_cells(start_row=9,end_row=14,start_column=2,end_column=2)ws.merge_cells(start_row=15,end_row=18,start_column=1,end_column=1)ws.merge_cells(start_row=15,end_row=18,start_column=2,end_column=2)wb.save()

只是問題在于我們不能總是人工判斷start_row和end_row,如何能使程序自動(dòng)獲取row的起始點(diǎn)呢?其實(shí)我們使用一個(gè)groupby就發(fā)現(xiàn)了方法了!大家看到了嗎?

Python實(shí)現(xiàn)Excel自動(dòng)分組合并單元格

真是柳暗花明又一村啊,完整解決方案已經(jīng)有了,我封裝到了tkinter里面,請(qǐng)看!

#-*- coding:utf-8 -*-import tkinter as tk #使用Tkinter前需要先導(dǎo)入from tkinter import filedialog,messagebox,ttkfrom openpyxl import load_workbookfrom openpyxl.styles import Alignmentimport osimport pandas as pd#建立窗口windowwindow = tk.Tk()window.title(’Excel合并單元格工具’)w_width=630w_height=600scn_width=window.maxsize()[0]x_point=(scn_width-w_width)//2window.geometry(’%dx%d+%d+%d’ %(w_width,w_height,x_point,100))window.wm_attributes(’-topmost’,True)window.tk_focusFollowsMouse()window.bind('<Escape>',lambda event:window.iconify())path_tar=tk.StringVar()sheetvar=tk.StringVar() #目標(biāo)工作表#打開目標(biāo)文件def getmergefile(): file_path=filedialog.askopenfilename(title=u’選擇文件’,filetype=[(’Excel’,’.xlsx’)]) path_tar.set(file_path) alldata=pd.read_excel(file_path,None) ttk.Label(frame1,text='請(qǐng)選擇目標(biāo)工作表:').grid(row=1,column=0,sticky=’w’) global sheetvar chosen_sheet=ttk.Combobox(frame1,width=16,textvariable=sheetvar) chosen_sheet[’values’]=list(alldata) chosen_sheet.grid(row=1,column=1,sticky=’w’) chosen_sheet.bind('<<ComboboxSelected>>',lambda event:getmergeseg(event,alldata,sheetvar.get()))#勾選目標(biāo)字段def getmergeseg(event,alldata,sheet): global frame2,segvars segvars=[] try: frame2.destroy() except: pass frame2=tk.Frame(window,padx=15,pady=6) frame2.grid(row=1,column=0,sticky=’w’) ttk.Label(frame2,text='請(qǐng)勾選分組合并的目標(biāo)字段(第一個(gè)勾選框?yàn)榉纸M合并依據(jù),必須事先進(jìn)行排序:').grid(row=0,column=0,columnspan=4,sticky=’w’) data=alldata[sheet] for index,item in enumerate(data.columns): segvars.append(tk.StringVar()) ttk.Checkbutton(frame2,text=item,variable=segvars[-1],onvalue=item,offvalue=’’).grid(row=(index//4+1),column=index%4,sticky=’w’)#合并字段單元格def merging(file,sheet,segvars): selected=[i.get() for i in segvars if i.get()] df=pd.read_excel(file,sheet) wb=load_workbook(file) ws=wb[sheet] mergecells(ws,df,selected) try: wb.save(file) messagebox.showinfo(’提示’,file+’-’+sheet+’指定單元格合并完成’) os.system(’start ’+os.path.dirname(file)) except Exception as e: messagebox.showerror(’警告’,str(e))#合并單元格函數(shù)def mergecells(ws,df,cols): col=cols[0] gdic=df.groupby(col).groups aligncenter=Alignment(horizontal=’center’,vertical=’center’) for gname in gdic: indexs=gdic[gname]+2 indexs=indexs.sort_values() for col in cols: #每一個(gè)要合并的字段 colindex=df.columns.tolist().index(col)+1 ws.merge_cells(start_row=indexs[0],end_row=indexs[-1],start_column=colindex,end_column=colindex) #合并 for i in range(1,ws.max_row+1): #實(shí)現(xiàn)居中 ws.cell(row=i,column=colindex).alignment=aligncenterdef manual(): #使用說明 info=''' 作用是合并單元格,把同樣內(nèi)容的單元格合并到一起,所以必須實(shí)現(xiàn)對(duì)目標(biāo)字段進(jìn)行排序,否則無法實(shí)現(xiàn)合并 ''' messagebox.showinfo(’提示’,info)frame1=tk.Frame(window,pady=6,padx=15)frame1.grid(row=0,column=0,sticky=’w’)ttk.Button(frame1,text='打開目標(biāo)文件',command=getmergefile).grid(row=0,column=0,sticky=’w’)ttk.Entry(frame1,textvariable=path_tar,width=40).grid(row=0,column=1)frame3=tk.Frame(window,pady=10,padx=15)frame3.grid(row=2,column=0,sticky=’w’)ttk.Button(frame3,text='點(diǎn)擊合并單元格',command=lambda:merging(path_tar.get(),sheetvar.get(),segvars)).grid(row=0,column=0,sticky=’w’)ttk.Button(frame3,text='使用說明',command=manual).grid(row=0,column=1)window.mainloop()

效果如圖:

Python實(shí)現(xiàn)Excel自動(dòng)分組合并單元格

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: python
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费不卡在线视频| 亚洲国产福利| 日韩午夜视频在线| 午夜电影亚洲| 亚洲一级在线| 亚洲永久精品唐人导航网址| 首页国产欧美久久| 亚洲成人国产| 亚洲免费播放| 国产精品一区免费在线| 日本成人中文字幕| 欧美亚洲综合视频| 欧美亚洲综合视频| 国产视频一区二| 精品午夜av| 一区二区三区四区日本视频| 久久青草久久| 亚洲精品精选| 免费在线亚洲欧美| 亚洲va中文在线播放免费| 国产精品久一| 日本一二区不卡| 亚洲高清激情| 国产精品社区| 日韩精品第二页| 国产极品久久久久久久久波多结野| 日韩高清在线不卡| 精品国产午夜肉伦伦影院| 精品在线91| 日本午夜精品久久久久| 精品精品99| 亚洲精品进入| 日本а中文在线天堂| 视频一区在线视频| 亚洲国产一区二区在线观看| 色狠狠一区二区三区| 国产在线视频欧美一区| 国产亚洲一区在线| 久久免费精品| 视频一区日韩| 久久午夜精品| 日韩国产一区二区| 国产亚洲久久| 国产美女一区| 日本va欧美va瓶| 在线一区免费| 亚洲欧洲一区二区天堂久久| 久久av综合| 亚洲精品精选| 久久久国产精品一区二区中文| 国产欧美日韩精品高清二区综合区| 蜜桃tv一区二区三区| 蜜桃伊人久久| 欧美特黄a级高清免费大片a级| 欧美日韩视频一区二区三区| 91麻豆国产自产在线观看亚洲| 国产三级精品三级在线观看国产| 日韩一级精品| 精品一区亚洲| 岛国精品一区| 久久精品99久久久| 日本不卡一区二区三区| 在线国产一区| 99在线观看免费视频精品观看| 久久影视一区| 欧美日韩高清| 四虎8848精品成人免费网站| 欧美成人精品午夜一区二区| 国产精品成人a在线观看| 国产调教一区二区三区| 日韩和欧美一区二区| 日韩中文一区二区| 日韩精品一区二区三区中文在线| 亚洲天堂日韩在线| 久久中文在线| 91av亚洲| 水野朝阳av一区二区三区| 在线视频亚洲| 中文字幕av亚洲精品一部二部| 久久99久久久精品欧美| 精品一区二区三区亚洲| 97精品97| 欧美性感美女一区二区| 欧美在线影院| 欧美日本不卡高清| 成人羞羞视频在线看网址| 欧洲毛片在线视频免费观看| 一区二区国产在线| 日韩av免费大片| 999久久久免费精品国产| 久久亚洲风情| 精品视频免费| 91久久午夜| 国产精久久一区二区| 精品久久亚洲| 日韩精品一级中文字幕精品视频免费观看 | 国产亚洲一区二区手机在线观看 | 日本午夜免费一区二区| 久久精品国产久精国产爱| 国产精品成人自拍| 婷婷成人在线| 88久久精品| 精品美女在线视频| 视频一区中文字幕国产| 神马午夜久久| 国产精品亚洲成在人线| 亚洲欧美日韩视频二区| 精品国产一区二区三区性色av| 国产精品婷婷| 日韩中文影院| 欧美精品二区| 视频一区中文字幕| 亚洲a在线视频| 福利片在线一区二区| 激情久久中文字幕| 精品视频99| 国产精品欧美日韩一区| 亚洲免费观看| 久久精品播放| japanese国产精品| 青青青免费在线视频| 久久99精品久久久久久园产越南| 欧美日韩99| 一区二区三区国产在线| 91高清一区| 999久久久91| 亚洲精品.com| 三级在线看中文字幕完整版| 久久免费影院| 久久国产乱子精品免费女| 91成人网在线观看| 亚洲免费婷婷| 性一交一乱一区二区洋洋av| 亚洲一区国产| 国产日本精品| 国产一区日韩| 久久精品亚洲欧美日韩精品中文字幕| 日韩免费小视频| 国产一区成人| 日韩二区三区在线观看| 麻豆国产一区| 国产高清不卡| 日韩视频不卡| 青青在线精品| 欧美国产中文高清| 国产美女久久| 久久99精品久久久久久园产越南| 色婷婷色综合| 国产偷自视频区视频一区二区| 快she精品国产999| 日韩一级网站| 国产精品久久| 欧美性感美女一区二区| 久久精品在线| 日本成人在线不卡视频| 欧美精品不卡| 日韩综合在线| 日韩一区精品视频| 国产福利一区二区三区在线播放| 国产亚洲高清一区| 色综合五月天| 日韩精品一二区| 日韩av不卡一区二区| 欧美二三四区| 国产精品美女午夜爽爽| 98精品视频| 日本午夜精品久久久| 精品一区三区| 国产欧美日韩综合一区在线播放| 亚洲h色精品| 国产精品久久久免费| 国产精品日本| 成人日韩av| 日本中文字幕视频一区| 激情欧美亚洲| 婷婷激情图片久久| 91亚洲国产高清| 中文字幕日韩高清在线| 婷婷成人在线| 久久爱www.| 奇米亚洲欧美| 国产伦精品一区二区三区视频| 激情久久中文字幕| 蜜臀国产一区| 精品视频国内| 日韩av午夜在线观看| 亚洲精品麻豆| 亚洲一区二区三区高清不卡| 国内精品亚洲| 麻豆免费精品视频| 国产精品毛片| 欧洲av一区二区| 欧美一区三区| 一区视频在线| 综合激情婷婷| 欧美亚洲tv| 另类欧美日韩国产在线| 欧美亚洲日本精品| 欧美男人天堂| 欧美日韩精品免费观看视频完整|