Excel分表小軟件代碼|python

# -*- coding: utf-8 -*-
"""
Created on Tue Oct 29 09:27:32 2019

@author: weiping --tkinter
"""

import tkinter as tk
import pandas as pd 


root = tk.Tk()
root.title('分表')
root.geometry('500x500')
var1 = tk.IntVar()
var2 = tk.StringVar()
var3 = tk.StringVar()
e1 = tk.Entry(root,textvariable = var1,width = 250)
var1.set('請輸入分表的各表條數')
e1.pack()
e2 = tk.Entry(root,textvariable = var2,width = 250)
var2.set("請輸入excel的絕對路徑(不包含後綴)")
e2.pack()
e3 = tk.Entry(root,textvariable = var3,width = 250)
var3.set("請輸入csv的絕對路徑(不包含後綴)")
e3.pack()
def fenbiao():
    wenjian = e2.get() #獲取文本框內容
    df = pd.read_excel(wenjian + '.xlsx')
    df = df.fillna('')
    col = list(set(df.iloc[:,0]))
    addr = pd.ExcelWriter(wenjian +'new.xlsx')
    
    for i in col:
        dt = df[df.iloc[:,0] == i]
        dt.to_excel(addr, sheet_name = str(i), index=False)
    addr.save()
    addr.close()   
    tk.Label(root,text="分表結束").pack()

def fenduan():
    wenjian = e2.get() #獲取文本框內容
    df = pd.read_excel(wenjian + '.xlsx')
    df = df.fillna('')
    tt = int(e1.get())
    long = df.shape[0]
    t_max = int(long/tt) + 1
    for i in range(1,t_max+1):
        j = df.iloc[(i-1)*tt:i*tt,:]
        addr = pd.ExcelWriter(wenjian +str(i) + '.xlsx')
        j.to_excel(addr,  index=False)
        addr.save()
        addr.close()
    tk.Label(root,text = "分段結束").pack()
def fenduan_csv():
    wenjian = e3.get() #獲取文本框內容
    df = pd.read_csv(wenjian + '.csv')
    df = df.fillna('')
    tt = int(e1.get())
    long = df.shape[0]
    t_max = int(long/tt) + 1
    for i in range(1,t_max+1):
        j = df.iloc[(i-1)*tt:i*tt,:]
        addr = pd.ExcelWriter(wenjian +str(i) + '.xlsx')
        j.to_excel(addr,  index=False)
        addr.save()
        addr.close()
    tk.Label(root,text = "分段結束").pack()

tk.Button(root,text="分表",command=fenbiao).pack()
tk.Button(root,text = '分段',command = fenduan).pack()
tk.Button(root,text = '分段csv',command = fenduan_csv).pack()
tk.Label(root,text = "註釋:\n分表是指,對錶格第一列數據每個選項生產一個sheet,例如分省;\n分段是指,對大量數據進行數據量分割,例如一個10萬的數據分成10個1萬的表").pack()
root.mainloop()







效果圖如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章