使用Python怎么操作Excel实现自动分组合并单元格

  介绍

这篇文章主要介绍了使用Python怎么操作Excel实现自动分组合并单元格,小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随小编来看看吧!

df.to_excel (& # 39; test.xlsx& # 39;,指数=False)   得到openpyxl  import  load_workbook   世行=load_workbook (& # 39; test.xlsx& # 39;)   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,如何能使程序自动获取连续的起始点呢?其实我们使用一个groupby就发现了方法了!大家看到了吗?

使用Python怎么操作Excel实现自动分组合并单元格

真是柳暗花明又一村啊,完整解决方案已经有了,我封装到了tkinter里面,请看!

# - *安康;编码:utf-8  - * -   import  tkinter  as  tk  #使用Tkinter前需要先导入   弹出窗口,得到tkinter  import  filedialog ttk   得到openpyxl  import  load_workbook   得到openpyxl.styles  import 对齐   import 操作系统   import  pandas  as  pd   #建立窗口窗口   时间=window  tk.Tk ()   window.title (& # 39; Excel合并单元格工具& # 39;)   w_width=630   w_height=600   scn_width=window.maxsize () [0]   x_point=(scn_width-w_width)//2   window.geometry (& # 39; % dx % d + % d + % d # 39;, % (w_width, w_height x_point 100))   window.wm_attributes (& # 39; -topmost& # 39;,真的)   window.tk_focusFollowsMouse ()   window.bind (“& lt; Escape>“, lambda 事件:window.iconify ())      path_tar=tk.StringVar ()   sheetvar=tk.StringVar(),,,, #目标工作表   #打开目标文件   def  getmergefile ():   ,file_path=filedialog.askopenfilename (title=u # 39;选择文件& # 39;,文件类型=((& # 39;excel # 39; & # 39; .xlsx& # 39;)))   ,path_tar.set (file_path)   ,alldata=https://www.yisu.com/zixun/pd.read_excel (file_path,没有)   ttk.Label(第一帧,文本="请选择目标工作表:“).grid(行=1,列=0,粘性=' w ')   全球sheetvar   chosen_sheet=ttk.Combobox(第一帧,宽度=16,textvariable=sheetvar)   chosen_sheet(“价值”)=(alldata)列表   chosen_sheet.grid(行=1,列=1,粘性=' w ')   chosen_sheet。bind (“”,λ事件:getmergeseg(事件、alldata sheetvar.get ()))   #勾选目标字段   def getmergeseg(事件、alldata表):   全球frame2 segvars   segvars=[]   试一试:   frame2.destroy ()   除了:   通过   frame2=tk.Frame(窗口、padx=15 pady=6)   frame2.grid(行=1,列=0,粘性=' w ')   ttk.Label (frame2、文本="请勾选分组合并的目标字段(第一个勾选框为分组合并依据,必须事先进行排序:”).grid(行=0,列=0,columnspan=4,粘性=' w ')   data=alldata(表)   指数,项列举(data.columns):   segvars.append (tk.StringVar ())   ttk.Checkbutton (frame2、文本=项变量=segvars [1], onvalue=条目,offvalue=") .grid(行=(索引//4 + 1)=指数% 4列,粘性=' w ')   #合并字段单元格   def合并(文件、表segvars):   选择=[i.get()因为我segvars如果i.get ())   df=pd.read_excel(文件、表)   世行=load_workbook(文件)   ws=wb(表)   mergecells (ws, df,选择)   试一试:   wb.save(文件)   messagebox.showinfo(“提示”,文件+“-”+表+”指定单元格合并完成”)   操作系统。系统(“开始”+ os.path.dirname(文件)   除了例外e:   messagebox.showerror(“警告”,str (e))   #合并单元格函数   def mergecells (ws, df,峡路):   坳=关口[0]   gdic=df.groupby .groups (col)   aligncenter=对齐(水平=爸行摹?垂直=爸行摹?   在gdic gname:   指标=gdic gname + 2   指标=indexs.sort_values ()   上校的关口:#每一个要合并的字段   colindex=df.columns.tolist () .index (col) + 1   ws.merge_cells (start_row=指标[0],end_row=指标[1],start_column=colindex end_column=colindex) #合并   我的范围(1,ws.max_row + 1): #实现居中   ws.cell(行=我列=colindex) .alignment=aligncenter      def手册():#使用说明   信息=" "   作用是合并单元格,把同样内容的单元格合并到一起,所以必须实现对目标字段进行排序,否则无法实现合并   ”“”   messagebox.showinfo(“提示”,信息)      第一?tk.Frame(窗口、pady=6 padx=15)   frame1.grid(行=0,列=0,粘性=' w ')   ttk.Button(第一帧,文本="打开目标文件”,命令=getmergefile) .grid(行=0,列=0,粘性=' w ')   ttk.Entry(第一帧,textvariable=path_tar宽度=40).grid(行=0,列=1)   frame3=tk.Frame(窗口、pady=10 padx=15)   frame3.grid(行=2,列=0,粘性=' w ')   ttk.Button (frame3、文本="点击合并单元格”,命令=λ:合并(path_tar.get (), sheetvar.get (), segvars)) .grid(行=0,列=0,粘性=' w ')   ttk.Button (frame3、文本="使用说明”,命令=手册).grid(行=0,列=1)      window.mainloop ()

使用Python怎么操作Excel实现自动分组合并单元格