# -*- 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()
效果圖如下: