【问题标题】:Why an .xls file created with python csv and StringIO could be corrupted or unsafe?为什么使用 python csv 和 StringIO 创建的 .xls 文件可能已损坏或不安全?
【发布时间】:2018-06-20 21:16:54
【问题描述】:

我有一个 react 组件,它对我的​​小 api 进行 ajax 调用(使用 axios),然后我在自动下载的“.xls”文件中获取数据响应。一切正常,但是当我打开 .xls 文件时,Excel 会通过以下消息警告我:

“myfile.xls”的文件格式和扩展名不匹配。该文件可以 被损坏或不安全。除非你相信它的来源,否则不要打开它。做 还是要打开?

如果我忽略此警告并继续打开文件,它会打开并显示我正确预期的数据。 但是给用户看这个消息不是很优雅,怎么去掉呢?

我的代码是下一个:
创建xml的代码:

from io import StringIO  
import csv

MyAPIClass(Resource):
 (...)
    si = StringIO()
    cw = csv.writer(si, dialect='excel-tab')
    cw.writerows(dataset) #my iterable data list# 
    output = make_response(si.getvalue())
    output.headers["Content-Type"] = "application/vnd.ms-excel"
    output.headers["Content-Disposition"] = "attachment; filename=installations.xls"
    return output

处理 axios (ajax) 调用以下载我的 api 创建的文件的代码:

exportToExcel() {
const FileDownload = require('react-file-download');
axios({method:'post', url: '/myapi_to_excel', headers: {'Accept': ' text/csv'})
        .then(res => {
            FileDownload(res.data, 'myfile.xls');
        });
}

谢谢!!!祝你有美好的一天!

【问题讨论】:

    标签: excel python-3.x reactjs axios flask-restful


    【解决方案1】:

    这是因为 .xls 是一个非常古老的 excel 扩展。此扩展适用于 97-2003。如果您之后更改脚本以创建 .xlsx 文件,一切都应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 2016-04-18
      • 2020-06-21
      • 2013-10-24
      相关资源
      最近更新 更多