为什么使用python csv和StringIO创建的.xls文件可能已损坏或不安全?

时间:2017-08-16 15:16:32

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

我有一个反应组件,对我的小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');
        });
}

谢谢!!!祝你有愉快的一天!

1 个答案:

答案 0 :(得分:0)

这是因为.xls是excel的很旧的扩展名。此扩展适用于97-2003。如果之后更改脚本以创建.xlsx文件,则一切都将正常。