使用Ajax和Flask下载Excel文件

用户按下页面上的form包含的按钮:

<form id="form">
    <input type="button" id="export" value="Export"/>
</form>

点击按钮后,将进行以下Ajax调用:

ajaxCall('/export', {}, callback_export, 'get');

哪里

function ajaxCall(url, params, callback, type) {
    if (validate()) {
        var request;
        request = $.ajax({
            url: url,
            type: type,
            data: params
        });
    }
    request.done(function (response, textStatus, jqXHR){
        callback(response);
    });
}

Flask应用程序如下所示:

@app.route('/export')
def export():
    xl_file= '/absolute/path/to/excel/file.xlsx'
    return send_file(xl_file, as_attachment=True, mimetype='application/vnd.ms-excel')

该文件的文件内容正在返回给浏览器(请参阅下图),而不是文件本身作为附件。

问题是,回调需要看起来像接受文件附件的回应? 否则,需要进行哪些修改?

(是的,我搜索并阅读了很多关于SE的帖子,大多数讨论使用form.submit()方法,但没有提供细节。我希望避免使用form.submit()因为其他元素无法提交的#form 。)

在这里输入图像描述


你真的需要使用Ajax? 我发现ajax是一个解决方案,用烧瓶下载excel文件...但它不适合我。 我只需在'rb'模式下打开excel文件,并将mimetype改为在Windows中被识别为excel文件。 你的Flast只需要调用getPlotExcel()。

@app.route("/getPlotExcel")
def getPlotExcel():
    excelDownload = open("sample.xlsx",'rb').read()
    return Response(
        excelDownload,
        mimetype="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        headers={"Content-disposition":
                 "attachment; filename=sample.xlsx"})
链接地址: http://www.djcxy.com/p/46845.html

上一篇: Download Excel file with Ajax and Flask

下一篇: How can I open an excel from a java jsp javascript?