我如何调整我的代码以使其与 Microsoft Excel 兼容?

How can I adapt my code to make it compatible to Microsoft Excel?

问题

我正在尝试实现一个 Web API(基于 Flask),它将用于查询给定一些特定条件的数据库,重建数据,最后将结果导出到 .csv 文件。

Since the amount of data is really really huge, I can not construct the whole dataset and generate the .csv file all at once(e.g. create a DataFrame using pandas and finally call df.to_csv()), because that would cause a slow query and maybe the http connection would end up timeout.

所以我创建了一个生成器,每次查询数据库 500 条记录并一个一个地产生结果,例如:

def __generator(q):
    [...]    # some code here
    while True:
        if records == None:
            break
        records = q[offset:offset+limit] # q means a sqlalchemy query object
        [...]   # omit some reconstruct code
        
        for record in records:
            yield record

最后构造一个Responseobject,发送.csv到客户端:

return Response(__generate(q), mimetype='text/csv')  # Flask

生成器运行良好,所有数据均由 'uft-8' 编码,但是当我尝试打开 .csv 文件使用微软Excel,看起来是乱码

已经尝试过的措施

我的问题是

How can I make my code compatible to Microsoft Excel? That means at least two conditions should be satisfied:

  • no messy code, well displayed;

  • well structured table;

非常感谢您的回答!

我建议您查看 xlutils。它已经存在了很长一段时间,我们公司已将其用于读取配置文件以进行 运行 自动化测试以及生成测试结果报告。

通过读取每列的文本格式,它不会修改读取为不同类型(如日期)的列。您的代码可能是正确的,并且 excel 可能只是在将数据解析为 csv 时修改数据 - 通过导入为文本格式,它不会修改任何内容。