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