内容借鉴: django实现保存Excel、读取Excel、将数据库中的数据导出到Excelhtml
实现功能::前端
前端将数据传过来, 后端将数据写入excel表格并下载。python
注: 将数据库数据导入excel 并下载同理ajax
原理分析:数据库
咱们在后台现将数据一二进制形式写入内存中, 使用HttpResponse, 进行返回并指明返回类型, 规定好文件名便可,django
过程:后端
咱们在前端经过post 或get将数据提交过来, 后端将内容读出写入并下载。app
注: 在使用ajax请求时实现不了下载功能。post
前端:ui
<div> <form class="layui-form" method="post" action="{% url 'myUtils:createtable' %}"> <div class="layui-form-item layui-form-text"> <label class="layui-form-label">内容</label> <div class="layui-input-block text-content"> <textarea name="desc" placeholder="请输入内容, 表格列划分是以空格划分, 行划分是以换行来划分的" class="layui-textarea text"></textarea> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn submit" lay-submit lay-filter="formDemo">当即提交</button> <button type="reset" class="layui-btn layui-btn-primary reset">重置</button> </div> </div> </form> </div>
view 代码:
class CreateTable(View):
def get(self, request): return render(request, template_name="html/createtable.html", context={}) def post(self, request): text = request.POST.get('desc') if text:
# 指定文件类型
#指定数据类型为excel response = HttpResponse(content_type='application/ms-excel') # 设置文件名 response['Content-Disposition'] = 'attachment; filename="result.xls"' # 建立工做薄 wb = xlwt.Workbook(encoding='utf-8') # 建立表 ws = wb.add_sheet("new sheet") font_style = xlwt.XFStyle() # 指定二进制 font_style.font.bold = True # 写入表格 text_rows = text.split("\n") for row, row_data in enumerate(text_rows): row_data = row_data.strip().split(" ") for col, col_data in enumerate(row_data): ws.write(row, col, col_data, font_style) font_style = xlwt.XFStyle() wb.save(response) return response