python3+openpyxl合并2个excel 表格

openpyxl Doc :https://openpyxl.readthedocs.io/en/default/index.html

#! /usr/bin/python3.5   
from tkinter import *  
from tkinter import filedialog
from openpyxl import Workbook  
from openpyxl import load_workbook
root= Tk() 
root.title("Common window ")
def read1():
    filename= filedialog.askopenfilename()
    e1.delete(0, END)
    e1.insert(0,filename)
def read2():
    filename= filedialog.askopenfilename()
    e2.delete(0, END)
    e2.insert(0,filename)

def fun():
    #text.delete(1.0,END)  # clear text
    text.insert(INSERT,"input1:"+e1.get()+"\n",'g')  
    text.insert(INSERT,"inout2:"+e2.get()+"\n",'g')  
    owb = Workbook()   #输出wb  
    ows = owb.active   #获取活动表  
    ows.title = "sheet"    #命名表  
    try:
        wb1 = load_workbook(e1.get()) #读入1  
        wb2 = load_workbook(e2.get()) #读入2  
  
        s_name1 = wb1.get_sheet_names() #得到输入表名数组  
        s_name2 = wb2.get_sheet_names() #得到输入表名数组  

        ws1 = wb1.get_sheet_by_name(s_name1[0]) #得到读入book1的第一张表  
        ws2 = wb2.get_sheet_by_name(s_name2[0]) #得到读入book2的第一张表  
        print ('book1_sheet1_name:%s'% s_name1[0])  
        print ('book2_sheet1_name:%s'% s_name2[0])  
  
        for i in range(1,9):  
            for j in range(1,8):  
                if not ws1.cell(row=i, column=j).value==None: #判断cell 是否为空  
                    ows.cell(row=i, column=j).value = ws1.cell(row=i, column=j).value  
                else:
                    if not ws2.cell(row=i, column=j).value==None: #判断cell 是否为空  
                        ows.cell(row=i, column=j).value = ws2.cell(row=i, column=j).value
        owb.save('out.xlsx')  #保存输出  
        text.insert(INSERT,"combine finish !\n") 
    except :
        text.insert(INSERT,"Error: 找不到文件!\n",'red')  
        print("找不到文件!")  
  
frame= Frame(root)  
frame.pack(padx=40,pady=20) #set area
#label= Label(frame,text="file1:",font=("宋体",15),fg="blue").grid(row=0,column=0,padx=15,pady=5)  
#label= Label(frame,text="file2:",font=("宋体",15),fg="blue").grid(row=1,column=0,padx=15,pady=5)  

b1 = Button(frame,text="first table  ",font=("宋体",15),command=read1).grid(row=0,column=0,padx=8) 
b2 = Button(frame,text="second table ",font=("宋体",15),command=read2).grid(row=1,column=0,pady=8) 
e1= Entry(frame,foreground = 'blue',font = ('Helvetica', '12'))
e2= Entry(frame,font = ('Helvetica', '12'))
e1.grid(row=0,column=1,ipadx=5)
e2.grid(row=1,column=1,ipadx=5)
e1.insert(0,"book1.xlsx")
e2.insert(0,"book2.xlsx")

butt_fun = Button(frame ,text=" 合并表格 ",font=("宋体",15),width=10,command= fun ).grid(row=2,column=0,padx=15,pady=5)  
butt_exit = Button(frame ,text=" exit ",font=("宋体",15),width=10,command=root.quit).grid(row=2,column=1,padx=15,pady=5)  


text = Text(frame,width=45,height=9,font =("微软雅黑",10))
text.tag_config('red', foreground='red')
text.tag_config('g', foreground='green')  
text.grid(row=3,column=0,padx=35,pady=5,columnspan=2)  
root.mainloop()  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值