Python-web 生成csv文件并下载(前段,后端)

本文转自 [https://blog.csdn.net/xiaoming0018/article/details/88788227]

前端生成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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值