前端生成csv文件并下载
function dowlondCSV(){
let str = "header1,header2,header3\n" +
"row1td1,row1td2,row1td3\n";
let uri = 'data:text/csv;charset=utf-8,' + encodeURIComponent(str);
var link = document.createElement("a");
link.href = uri;
link.download = "dowlond.csv";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
Python Flask 后端生成csv文件并下载
@src.route('/', methods=['GET', 'POST'])
def download_csv():
author = request.args.get('author') or ''
download_date = datetime.datetime.now().date()
data_csv = '作者,\r\n'
for vul_report in vul_report_list_result:
author = vul_report[0].encode('utf-8')
data_csv += '{},\r\n'. format(author,)
response = make_response(data_csv.encode('utf-8'))
file_size = len(data_csv)
if response:
response.headers['Content-Description'] = 'File Transfer'
response.headers['Cache-Control'] = 'no-cache'
response.headers['Content-Type'] = 'text/plain'
response.headers['Content-Disposition'] = 'attachment; filename=%s' % '报告{}'.format(download_date).encode('utf-8').decode('ISO-8859-1')+ '.' + 'csv'
response.headers['Content-Length'] = file_size
return response
Python Tornado 后端生成csv文件并下载
@url(r'/')
class Downloadscv(LoginedRequestHandler):
def get(self):
id = self.get_argument('id', '')
result = Model().select().where(Model.id == id)
result_name = result.name
results = [model_to_dict(item) for item in result]
data_csv = '名字,\r\n'
for item in results:
name = item['name']
data_csv += '{},\r\n'.format(name,)
filename = '{}.csv'.format(result_name)
self.set_header('Content-Type', 'application/octet-stream')
self.set_header('Content-Disposition', 'filename={}'.format(filename.encode('utf-8').decode('ISO-8859-1')))
self.write(data_csv)
Python Django 后端生成xls文件并下载
obj = get_query_all(dic, header)
buf = BytesIO() # from io import BytesIO
import openpyxl
appeal_wb = openpyxl.Workbook(encoding='utf-8',write_only=True)
ws = appeal_wb.create_sheet()
ws.append(list(header_dic.values()))
for row in obj:
ws.append(list(row.values()))
appeal_wb.save(buf)
file = buf.getvalue()
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment;filename=' + 'RebatePool' + '.xls'
response.write(file)
return response