成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Python實現(xiàn)Excel自動分組合并單元格

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

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

Python實現(xiàn)Excel自動分組合并單元格

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

Python實現(xiàn)Excel自動分組合并單元格

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

Python實現(xiàn)Excel自動分組合并單元格

直觀的操作是這樣的:

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,如何能使程序自動獲取row的起始點呢?其實我們使用一個groupby就發(fā)現(xiàn)了方法了!大家看到了嗎?

Python實現(xiàn)Excel自動分組合并單元格

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

#-*- coding:utf-8 -*-import tkinter as tk #使用Tkinter前需要先導入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() #目標工作表#打開目標文件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='請選擇目標工作表:').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()))#勾選目標字段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='請勾選分組合并的目標字段(第一個勾選框為分組合并依據(jù),必須事先進行排序:').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: #每一個要合并的字段 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): #實現(xiàn)居中 ws.cell(row=i,column=colindex).alignment=aligncenterdef manual(): #使用說明 info=''' 作用是合并單元格,把同樣內(nèi)容的單元格合并到一起,所以必須實現(xiàn)對目標字段進行排序,否則無法實現(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='打開目標文件',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='點擊合并單元格',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實現(xiàn)Excel自動分組合并單元格

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: python
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩成人一区二区三区在线观看| www.综合网.com| 成人免费高清在线观看| 欧美日韩一级片在线观看| 午夜激情久久久| 一区二区三区欧美在线| 亚洲国产精品成人综合| 欧美激情无毛| 久久蜜桃一区二区| 波多野结衣中文字幕一区| 欧美成人bangbros| 成人丝袜视频网| 欧美美女一区二区在线观看| 青草av.久久免费一区| 美女久久网站| 水野朝阳av一区二区三区| 久久国产日本精品| 秋霞午夜鲁丝一区二区老狼| 91行情网站电视在线观看高清版| 青青草91视频| 欧美亚洲精品一区| 精品亚洲免费视频| 欧美另类videos死尸| 国产一区二区三区视频在线播放| 欧美高清视频在线高清观看mv色露露十八| 国模娜娜一区二区三区| 91精品久久久久久久99蜜桃 | 成人综合激情网| 精品久久久影院| 99精品视频一区二区| 国产亚洲精久久久久久| 国产精品yjizz| 亚洲欧美另类小说| 亚洲一区激情| 蜜臀av国产精品久久久久| 欧美日韩成人一区二区| 国产成人一级电影| www国产成人| 狠狠爱成人网| 一区二区三区四区国产精品| 久久久久网站| 精品一区二区在线观看| 制服丝袜av成人在线看| 成人福利视频在线看| 国产日韩精品一区| 在线免费日韩片| 亚洲在线一区二区三区| 色猫猫国产区一区二在线视频| 精品一区二区在线看| 精品国产乱码久久久久久蜜臀| 欧美私人啪啪vps| 一区二区三区波多野结衣在线观看 | 国产v日产∨综合v精品视频| 精品国产成人在线影院| 色综合一区二区| 亚洲视频免费在线观看| 久久一日本道色综合久久| 国产在线精品一区在线观看麻豆| 欧美成人一区二区三区在线观看| 欧美国产三区| 亚洲成人免费视| 欧美一级电影网站| 欧美日韩三区四区| 亚洲sss视频在线视频| 在线不卡a资源高清| 91老师片黄在线观看| 亚洲精品乱码久久久久久久久| 91激情在线视频| av电影一区二区| 一区二区三区日本| 91精品国产综合久久香蕉麻豆| 欧美不卡高清| 午夜成人免费电影| 日韩一级片在线播放| 欧美日韩精品免费观看视一区二区| 亚洲在线视频网站| 91精品国产欧美一区二区成人| 国产精品激情| 美女国产一区二区三区| 久久这里只有精品视频网| 日韩网站在线| 国产乱人伦偷精品视频免下载| 中文字幕乱码亚洲精品一区| 色哟哟一区二区| 99久久99久久精品免费看蜜桃| 亚洲美女在线一区| 666欧美在线视频| 日韩亚洲一区在线播放| 国产精品影音先锋| 亚洲黄色免费网站| 日韩美女视频在线| 亚洲色诱最新| 成人黄色777网| 亚洲成人av电影| 久久久久久免费毛片精品| 久久成人一区| 91丨九色丨蝌蚪富婆spa| 视频一区二区不卡| 欧美经典三级视频一区二区三区| 美女主播一区| 91在线播放网址| 日本成人在线看| 国产精品久久久久久久久免费丝袜| 欧美亚洲免费在线一区| 亚洲电影在线| 国产98色在线|日韩| 亚洲国产精品嫩草影院| 久久精品视频免费观看| 欧美无人高清视频在线观看| 狠狠色丁香久久综合频道 | 亚洲精品国产日韩| 国产福利91精品一区| 亚洲男人天堂av| 欧美大片一区二区| 久久久精品动漫| 国内精品福利| 丁香啪啪综合成人亚洲小说| 亚洲高清免费在线| 26uuu国产日韩综合| 日本精品一区二区三区四区的功能| 欧美色欧美亚洲另类七区| 久久99国产乱子伦精品免费| 悠悠色在线精品| 久久精品一区二区三区不卡牛牛 | 国产福利一区二区三区视频| 亚洲一区二区三区不卡国产欧美| 久久久欧美精品sm网站| 欧美日韩国产区一| 久久久99爱| 亚洲精品一区二区三区av| 99视频在线观看一区三区| 精品一区二区免费| 日韩va亚洲va欧美va久久| 亚洲精品久久7777| 欧美激情在线一区二区三区| 欧美一级日韩免费不卡| 在线亚洲欧美专区二区| 一本一本久久| 国产精品二区在线| 波多野结衣中文字幕一区| 九色综合国产一区二区三区| 亚洲图片欧美综合| 成人免费在线视频观看| 久久综合九色欧美综合狠狠| 欧美精品v国产精品v日韩精品| 久久国产主播精品| 国产欧美另类| 亚洲成人中文| 国产精品swag| 91小宝寻花一区二区三区| 国产老妇另类xxxxx| 日韩二区三区四区| 亚洲自拍偷拍麻豆| 亚洲女厕所小便bbb| 亚洲欧美一区二区在线观看| 国产午夜精品一区二区三区视频| 欧美成人福利视频| 日韩精品综合一本久道在线视频| 欧美日韩高清在线| 欧美自拍丝袜亚洲| 色婷婷久久一区二区三区麻豆| 国产精品有限公司| 国产一级久久| 亚洲自啪免费| 国产日韩三区| 一区二区高清视频| 99精品国产在热久久| 亚洲精品社区| 999在线观看精品免费不卡网站| 亚洲国产精品一区二区第四页av| 欧美日韩一区二区视频在线| 欧美精品aa| 欧美日本不卡高清| 欧美日韩综合久久| 91在线观看高清| 欧美99久久| 欧美日韩国产综合网| 午夜日韩在线| 狠狠色综合色区| 伊人久久综合| 亚洲黄页一区| 在线视频一区观看| 国产手机视频一区二区| 国产日韩亚洲欧美精品| 噜噜噜在线观看免费视频日韩| 亚洲欧美日韩视频二区| 香蕉久久夜色精品国产| 色婷婷国产精品综合在线观看| 在线一区二区三区四区五区 | 久久久久久久久免费| 久久精品亚洲精品国产欧美| 日本一区二区三区高清不卡| 国产精品人人做人人爽人人添| 国产精品国产a级| 亚洲精品国产品国语在线app| 一区二区三区在线视频播放| 亚洲一区免费视频| 日本不卡一区二区| 激情图片小说一区| 99久久免费精品|