一、代码
import os
import pandas as pd
class PathError(BaseException):
def __init__(self, error):
self.error = error
class ReadError(BaseException):
def __init__(self, error):
self.error = error
class WriteError(BaseException):
def __init__(self, error):
self.error = error
class ExcelSplit():
def __init__(self):
pass
def read(self, path):
df = pd.read_excel(path)
return df
def split(self, path, dir, excel_name,amount):
'''
:param path: 被拆分excel
:param dir: 拆分存放文件夹
:param excel_name: 拆分文件名
:param amount: 拆分数量
:return:
'''
if not os.path.exists(path):
raise PathError("文件地址不存在")
if not isinstance(amount, int):
return {"error": "amount为int"}
if not os.path.exists(dir):
os.mkdir(dir)
try:
df = self.read(path)
except Exception as e:
raise ReadError("文件读取失败")
if len(df) > amount:
for i in range(amount):
if i == amount-1:
i_df = df[i * (len(df) // amount):len(df)]
else:
i_df = df[i * (len(df) // amount):len(df) // amount * (i + 1)]
i_df.to_excel(dir + "/" + "{}{}.xlsx".format(excel_name,i), index=False)
return {"msg":"成功拆成{}份".format(amount)}
return {"error":"原表拆分数量不够"}
if __name__ == '__main__':
path=r"********.xlsx"
dir=r"*******文件夹"
excel_name="文件名"
amount=5
es=ExcelSplit()
es.split(path,dir,excel_name,amount)