对于这个需求,倒不是不可以,但各种表格的表头、格式、编码方式都不同,通用软件需要处理各种异常情况,开发成本很高,而且封装成exe后对操作系统环境也有要求,反而到最后不好用,我的答复是有低成本的解决方案:封装成函数,只需要更改参数即可。还是以上篇的案例进行扩展,有数据源,多个筛选条件:筛选条件写法不变,但要定义一个函数(如save_to_excel_separate_sheets),有三个参数(数据源,筛选条件,新文件路径),使用时修改这三个参数就行:def save_to_excel_separate_sheets(df, conditions, output_file):
for i, row in conditions.iterrows():
.....
mask = (df['订单状态'] == order_status) & \
(df['商品SCM编码'] == product_code) & \
(df['下单时间'] <= end_time) & \
(df['下单时间'] >= start_time)
.....
定义完后,可以像Excel函数一样直接调用,def save_to_excel_separate_sheets(参数1,参数2,参数3)file_path = r'E:\素材\数据筛选\测试1_展开全部.xlsx' # 源文件地址df = pd.read_excel(file_path, '源数据') # 读取源数据(参数1)
conditons = pd.read_excel(file_path, '筛选条件')# 读取筛选条件(参数2)
new_path = r'E:\素材\数据筛选\new1.xlsx' # 新文件地址(参数3)
数据按多个筛选条件自动提取到新文件不同的Sheet页中,如遇到其他不同工作表只须更改筛选条件和参数很快达到通用软件一样的效果。