class CandidateAdmin(admin.ModelAdmin): # 定义actions 将函数注册到actions里面 actions [export_model_as_csv, ] pass用pandas实现导出功能
def export_model_as_csv(modeladmin,request,queryset): # request是用户发起的请求 queryset用户在列表选择的结果列表里的数据集合 response HttpResponse(content_type text/csv ) response[ Content-Disposition ] attachment; filename %s-list-%s.csv % ( name , datetime.now().strftime( %Y-%m-%d-%H-%M-%S ) data pd.Dataframe(list(queryset.values())) id_list list(data[ app_username ].unique()) name_list [] for i in id_list: name str(data[data[ app_username ] i][ name ].unique()[0]) name_list.append(name) new_data pd.Dataframe(columns pd.MultiIndex.from_product([data[ sign_date ].unique(), [ 早 , 中 , 晚 ]]), index pd.MultiIndex.from_arrays([id_list, name_list],names [ 学号 , 姓名 ])) for i in range(len(data)): obj data.iloc[i] new_data.loc[obj[ app_username ],obj[ name ]][obj[ sign_date ].strftime( %Y-%m-%d )] [JudgeTem(obj[ morning_temperature ]), JudgeTem(obj[ afternoon_temperature ]), JudgeTem(obj[ evening_temperature ])] new_data new_data.style.applymap(color, subset new_data.columns) output io.BytesIO() # 配置一个BytesIO 这个是为了转二进制流 new_data.to_excel(output) output.seek(0) # 把游标归0 response.write(output.getvalue()) # 写入数据 output.close() # 关闭 return response # 返回
参考
https://www.cnblogs.com/konghepeng/p/14708752.html
https://my.oschina.net/u/4311876/blog/3425145
设置导出的Excel表格风格



