最近接了个需求,在web页面提供导出数据表的接口
# 前端代码
<form name="myForm" action="/datafile/exportExcel/" method="post" id="form">
{% csrf_token %}
<h4>
<div class="form-group row">
<label for="table_name">数据表:</label>
<div class="col-6">
<select class="form-control" name="table_name" id="table_name">
<option value="tbl_test1">数据表1</option>
<option value="tbl_test2">数据表2</option>
</select>
</div>
<div class="col-2">
<input type="button" value="导出" onclick="export_table()">
</div>
</div>
</h4>
</form>
<script type="text/javascript">
function: setCookie(name, value){
document.cookie = name + "=" + value + "; path=/";
}
function: export_table(){
var table = $("#table_name option:selected").val();
setCookie("table", table);
myForm.submit();
}
</script>
def export_Excel(request)
if request.method=="POST":
table = request.COOKIES.get("table")
# 查询表头
headerSql = """select column_name from Information_schema.columns where table_Name = 'test2' """
# 查询数据
querySql = """SELECT * FROM {}""".format(table)
# 执行sql语句
# 往excel中插入数据(xlwd), 返回文件对象f
agent = request.META.get("HTTP_USER_AGENT")
response = HttpResponse(content_type="application/vnd.ms-excel") # 解决ie不能下载的问题
response["Content-Disposition"] = "attachment; filename={}".format(table) # 解决文件乱码问题
f.save(response)
return response