婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python實現Excel自動分組合并單元格

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

熱門標簽:400電話辦理費用收費 申請辦個400電話號碼 鎮江人工外呼系統供應商 外呼系統前面有錄音播放嗎 騰訊地圖標注有什么版本 高德地圖標注字母 千呼ai電話機器人免費 深圳網絡外呼系統代理商 柳州正規電銷機器人收費

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

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

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

直觀的操作是這樣的:

df.to_excel('test.xlsx',index=False)
from openpyxl import load_workbook
wb=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就發現了方法了!大家看到了嗎?

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

#-*- coding:utf-8 -*-
import tkinter as tk #使用Tkinter前需要先導入
from tkinter import filedialog,messagebox,ttk
from openpyxl import load_workbook
from openpyxl.styles import Alignment
import os
import pandas as pd
#建立窗口window
window = tk.Tk()
window.title('Excel合并單元格工具')
w_width=630
w_height=600
scn_width=window.maxsize()[0]
x_point=(scn_width-w_width)//2
window.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=aligncenter

def 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 合并多個excel中同名的sheet
  • python excel多行合并的方法
  • 利用Python pandas對Excel進行合并的方法示例
  • python合并多個excel文件的示例
  • 使用 Python 合并多個格式一致的 Excel 文件(推薦)
  • Python pandas實現excel工作表合并功能詳解
  • python操作openpyxl導出Excel 設置單元格格式及合并處理代碼實例
  • 使用python將多個excel文件合并到同一個文件的方法
  • Python實現合并excel表格的方法分析
  • python 實現讀取一個excel多個sheet表并合并的方法
  • 使用Python橫向合并excel文件的實例
  • 如何用python合并多個excel文件

標簽:大慶 哈爾濱 烏蘭察布 平頂山 合肥 海南 郴州 烏蘭察布

巨人網絡通訊聲明:本文標題《Python實現Excel自動分組合并單元格》,本文關鍵詞  Python,實現,Excel,自動,分組,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python實現Excel自動分組合并單元格》相關的同類信息!
  • 本頁收集關于Python實現Excel自動分組合并單元格的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲欧美日韩久久| 精品国产电影一区二区| 国产精品亚洲人在线观看| 国产欧美日韩一区二区三区在线观看| 中文字幕在线一区二区三区| 欧美精品自拍偷拍动漫精品| 国产麻豆精品95视频| 久久精品国产精品亚洲精品| 亚洲aaa精品| 亚洲一区二区五区| 国产精品成人网| 自拍偷自拍亚洲精品播放| 日韩欧美亚洲另类制服综合在线| 色哦色哦哦色天天综合| 色域天天综合网| 色婷婷一区二区三区四区| 国产精品99久久久久| 捆绑调教美女网站视频一区| 激情综合网激情| 国产99久久久国产精品潘金 | 日本一区二区综合亚洲| 欧美日韩午夜精品| 91精品视频网| 国产视频一区在线播放| 国产精品丝袜一区| 亚洲bt欧美bt精品| 99天天综合性| 91在线观看免费视频| 白白色亚洲国产精品| 欧美视频中文一区二区三区在线观看| 538在线一区二区精品国产| 日韩精品一区在线| 性做久久久久久免费观看| 日本aⅴ亚洲精品中文乱码| 99天天综合性| 国产欧美日韩精品a在线观看| 亚洲视频一区在线观看| 老鸭窝一区二区久久精品| 91香蕉视频mp4| 欧美日韩久久久一区| 欧美亚洲一区二区在线| 国产精品久久久久一区| 亚洲第一主播视频| 91福利精品第一导航| 日本一区二区三区dvd视频在线| 蜜臀av一区二区在线免费观看| 国产精品一区二区无线| 精品国产三级a在线观看| 亚洲国产另类av| 久久新电视剧免费观看| 国产一区在线不卡| 国产精品全国免费观看高清| 成人av影院在线| 亚洲欧美日韩国产成人精品影院| 亚洲大片一区二区三区| 欧美大片顶级少妇| 国产麻豆精品视频| 综合电影一区二区三区| 欧美日产在线观看| 成人aa视频在线观看| 亚洲高清免费观看高清完整版在线观看| 97se亚洲国产综合自在线观| 亚洲男帅同性gay1069| 51久久夜色精品国产麻豆| 精东粉嫩av免费一区二区三区| 国产欧美日韩精品a在线观看| 91在线高清观看| 三级一区在线视频先锋 | 国产成a人亚洲精品| 国产精品久久久久久久久快鸭| 在线观看成人免费视频| 狠狠色丁香婷综合久久| 亚洲综合小说图片| 国产精品不卡一区| 91成人网在线| 国产剧情一区在线| 奇米影视一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 欧美v亚洲v综合ⅴ国产v| 91亚洲精华国产精华精华液| 国产一区在线观看视频| 麻豆高清免费国产一区| 亚洲精品久久久久久国产精华液| 精品国产乱码久久久久久久久 | 国产传媒一区在线| 成人中文字幕在线| 国产乱子伦视频一区二区三区| 日日噜噜夜夜狠狠视频欧美人| 樱花影视一区二区| 视频一区视频二区中文| 蜜桃视频一区二区三区在线观看| 亚洲国产精品一区二区久久| 亚洲成人先锋电影| 樱桃国产成人精品视频| 亚洲精品免费电影| 日韩激情一二三区| 国产一区二区导航在线播放| 韩国精品主播一区二区在线观看 | 国产成人一级电影| 丁香六月久久综合狠狠色| 国产乱理伦片在线观看夜一区| 丁香天五香天堂综合| 成年人网站91| 日韩午夜电影av| 亚洲视频 欧洲视频| 精品综合久久久久久8888| 国产91精品精华液一区二区三区 | 亚洲综合成人在线视频| 99精品国产热久久91蜜凸| 国产乱码精品一品二品| 在线观看免费成人| 欧美成人三级在线| **性色生活片久久毛片| 亚洲第四色夜色| 91在线porny国产在线看| 精品免费视频一区二区| 亚洲美女精品一区| 成人免费福利片| 欧美mv和日韩mv的网站| 亚洲精品第一国产综合野| 国产美女久久久久| 亚洲小少妇裸体bbw| 99国产精品99久久久久久| 久久色.com| 国产一区欧美一区| 久久久噜噜噜久噜久久综合| 日本不卡中文字幕| 欧美精品视频www在线观看| 久久久精品蜜桃| 久久精品国产99国产精品| 精品一区二区三区在线观看国产| 欧美色爱综合网| 午夜a成v人精品| 欧美成人激情免费网| 日韩成人av影视| 国产真实乱偷精品视频免| 久久婷婷国产综合国色天香| 久久无码av三级| 国产欧美一区二区精品久导航| 亚洲bdsm女犯bdsm网站| 一本色道久久加勒比精品| 夜夜嗨av一区二区三区四季av | 91亚洲精品一区二区乱码| 亚洲乱码国产乱码精品精可以看| 欧美亚洲动漫另类| 国产成人精品亚洲777人妖| 亚洲国产三级在线| 精品福利在线导航| 欧美巨大另类极品videosbest| 国产乱子伦视频一区二区三区 | 最新成人av在线| 久久午夜老司机| 日韩一级大片在线| 欧美在线视频不卡| 成人污污视频在线观看| 麻豆免费看一区二区三区| 一区二区不卡在线播放 | 欧美一区二区三区啪啪| 日本系列欧美系列| 一区二区三区欧美视频| 欧美日韩在线播放三区四区| 日韩电影免费在线看| 国产日韩av一区二区| 26uuu另类欧美| 国产一二三精品| 日韩一区欧美二区| 亚洲18女电影在线观看| 亚洲综合视频在线观看| 久久色.com| 中文字幕精品综合| 久久久天堂av| 国产亚洲一本大道中文在线| 国产成人av网站| 国产精品 欧美精品| 久久精品国产一区二区三区免费看 | 中文字幕av资源一区| 国产日韩欧美综合在线| 欧美疯狂做受xxxx富婆| 欧美羞羞免费网站| 韩国精品免费视频| a在线播放不卡| 成人丝袜视频网| 99久久国产综合精品色伊| 欧美老女人在线| 色欧美乱欧美15图片| 欧美日韩一区久久| 制服丝袜亚洲网站| 国产女人aaa级久久久级| 国产精品护士白丝一区av| 精品国产青草久久久久福利| 国产一区二区三区在线观看精品 | 亚洲影院免费观看| 精品一区二区三区久久久| 琪琪一区二区三区| 国产麻豆精品一区二区| 国产精品影视在线| 亚洲成av人片观看| 欧美日韩视频在线第一区 | 538prom精品视频线放| 成人国产免费视频|