亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

Python實現Excel自動分組合并單元格

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

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

Python實現Excel自動分組合并單元格

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

Python實現Excel自動分組合并單元格

如何實現呢,這是原有的df

Python實現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就發現了方法了!大家看到了嗎?

Python實現Excel自動分組合并單元格

真是柳暗花明又一村啊,完整解決方案已經有了,我封裝到了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='請勾選分組合并的目標字段(第一個勾選框為分組合并依據,必須事先進行排序:').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))#合并單元格函數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): #實現居中 ws.cell(row=i,column=colindex).alignment=aligncenterdef manual(): #使用說明 info=''' 作用是合并單元格,把同樣內容的單元格合并到一起,所以必須實現對目標字段進行排序,否則無法實現合并 ''' 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實現Excel自動分組合并單元格

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

標簽: python
相關文章:
主站蜘蛛池模板: 性国产| 国产美女视频一区二区二三区 | 麻豆日韩区久久综合 | 欧美日韩国产在线观看 | 麻豆一区二区三区在线观看 | 一区二区三区四区亚洲 | 黄色网址大全免费 | 国产免费小视频在线观看 | 欧美aaaa在线观看视频免费 | 精品你懂的 | 小明看看成人免费 | 特级aaaaaaaaa毛片免费视频 | 国产女人久久精品 | 逼逼毛片| 最新香蕉97超级碰碰碰碰碰久 | 久久免费精品 | 国内自拍第五一页 | 免费在线一区二区三区 | 国产视频色 | 2020国产精品自拍 | 你懂得2019在线观看网站 | 国产精品7m凸凹视频分类大全 | 极品美女一级毛片 | 一级特黄aaa大片大全 | 小明免费视频 | 亚洲欧美日韩国产 | 国产精品福利自产拍网站 | 免费在线观看黄色小视频 | 精品国产三级在线观看 | 国产成人久久久精品一区二区三区 | 7m凹凸国产刺激在线视频 | 久久国产影视免费精品 | 日韩免费小视频 | 免费成人黄色 | 亚洲精品国产第一区二区图片 | 深夜在线看片 | 久久久精品视频在线观看 | 国产日本在线 | 免费久久一级欧美特大黄 | 亚欧毛片 | 国产小视频免费在线观看 |