您的位置:首页 > 数据库

Django-从数据库下载表格文件

2019-03-22 11:22 127 查看

安装包

pip install xlwt

导入模块

import xlwt
from io import BytesIO

点击这个方法,首先要访问一个接口,返回状态码,前台接受状态码,然后window.location.href="/export_mon/" 去get 访问另一个接口

<a href="javascript:export_day()" class="a1">导出每日详细信息</a>

首先访问一个接口

function export_day(){
var depname = $(".depname").val()

$.ajax({
url:'/export_one/',
type:'post',
data:{'cls_id':depname},
dataType:'json',
success:function(res){
if(res.code==200){
window.location.href="/export_day/"
}
}
})

}

后台 返回一个状态码

class Export_one(APIView):
def post(self,request):
mes = {'code':200}
return Response(mes)

然后前台接收状态码 访问 /export_day/ 接口

class Export_day(APIView):
def get(self,request):

response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment;filename=order.xls'
# 创建一个文件对象
wb = xlwt.Workbook(encoding='utf8')
# 创建一个sheet对象
sheet = wb.add_sheet('order-sheet')
monlist = Month.objects.filter(class_id=cls_id).all()
# 构造表格标题
sheet.write(0,0,'id')
sheet.write(0,1,'学生姓名')
sheet.write(0,2,'分数')
sheet.write(0,3,'添加时间')
sheet.write(0,4,'班级')
data_row = 1
for i in monlist :        # 遍历从数据库里获取的数据
sheet.write(data_row,0,i.id)
sheet.write(data_row,1,i.stu_name)
sheet.write(data_row,2,i.score)
sheet.write(data_row,3,datetime.strftime(i.add_time,'%Y-%m-%d'))
cls_one = Class.objects.filter(id=i.class_id).first()
sheet.write(data_row,4,cls_one.name)
data_row += 1
# 写出到IO
output = BytesIO()
wb.save(output)
# 重新定位到开始
output.seek(0)
response.write(output.getvalue())

exist_file = os.path.exists("daytext.xls")
if exist_file:
os.remove(r"daytext.xls")
wb.save("daytext.xls")

return response

文件会下载到当前浏览器,下载完成

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: