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

Why an .xls file created with python csv and StringIO could be corrupted or unsafe?

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

File format and extension of 'myfile.xls' don't match. The file could be corrupted or unsafe. Unless you trust its source, don't open it. Do you want to open it anyway?

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

我的代码是下一个:
创建 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');
        });
}

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

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