背景:
项目 : https://github.com/airbnb/caravel
版本 :0.10.0
现象 : 导出csv 含有中文时候乱码:
原有导出代码:采用flask中封装的Response函数
view.py
elif request.args.get("csv") == "true":
payload = obj.get_csv()
return Response(
payload,
status=200,
headers=generate_download_headers("csv"),
mimetype="application/csv")
def generate_download_headers(extension):
filename = datetime.now().strftime("%Y%m%d_%H%M%S")
content_disp = "attachment; filename={}.{}".format(filename, extension)
headers = {
"Content-Disposition": content_disp,
}
return headers
怎么改都不好用之后采取xlwt
https://pypi.python.org/pypi/xlwt
elif request.args.get("csv") == "true":
payload = obj.get_csv()
filename=generate_download(payload,'xls')
return send_from_directory(config.get("DOWNLOAD_FOLDER"),filename, as_attachment=True)
</pre><pre code_snippet_id="1857667" snippet_file_name="blog_20160830_5_4701559" name="code" class="html">def generate_download(payload,extension):
filetime = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = "Export_"+filetime+"."+extension
workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('钱包BI下载数据sheet1')
logging.info(payload)
data=payload.split('\n')
for x,value in enumerate(data):
cells = value.split(',')
for y,cell in enumerate(cells):
worksheet.write(x, y, label = cell)
workbook.save(config.get("DOWNLOAD_FOLDER")+filename)
return filename
变成下载xls文件,来解决乱码~
如果你恰巧看到这儿,知道怎么修改原有的方式解决乱码问题,欢迎交流~