use*_*375 2 python csv excel flask
这是 Flask 视图的一个最小示例,它生成 CSV (python 2.7)。
\n\n# -*- coding: utf-8 -*-\n\nimport csv\nimport StringIO\n\nfrom flask import Flask, Response\n\napp = Flask(__name__)\n\n\n@app.route('/example.csv')\ndef example_csv():\n f = StringIO.StringIO()\n writer = csv.writer(f)\n writer.writerow(['Header 1', 'Header 2', 'Header 3'])\n writer.writerows([unicode(_).encode('utf-8') for _ in row] for row in (['1', '2', '3'], \n ['a', 'b', 'c'],\n [u'\xc2\xa3', u'\xe2\x82\xac', u'\xc2\xa5']))\n response = Response(f.getvalue(), mimetype='text/csv')\n response.headers['Content-Disposition'] = u'attachment; filename=example.csv'\n return response\n\n\nif __name__ == '__main__':\n app.run(debug=True)\nRun Code Online (Sandbox Code Playgroud)\n\n在 Excel 中打开给出:
\n\nHeader 1 Header 2 Header 3\n1 2 3\na b c\n\xc3\x82\xc2\xa3 \xc3\xa2\xe2\x80\x9a\xc2\xac \xc3\x82\xc2\xa5\nRun Code Online (Sandbox Code Playgroud)\n\n使用 Apple 的 Numbers 应用程序,最后一行可以正确呈现。如何让 Excel 正确呈现?我是否缺少某种编码设置?
\n是否可以强制 Excel 自动识别 UTF-8 CSV 文件?表明问题在于 Excel 不会将文件视为 UTF-8,除非该文件以字节顺序标记开头(出于与其先前行为的向后兼容性的原因)。
尝试添加编码的 BOM 作为响应的前三个字节:
response = Response(u'\uFEFF'.encode('utf-8') + f.getvalue(), mimetype='text/csv')
Run Code Online (Sandbox Code Playgroud)
或者,第一个答案表明,如果这不起作用,则以 UTF- 16形式传送内容通常会起作用(但即使如此,也并非适用于每个版本的 Excel)。
| 归档时间: |
|
| 查看次数: |
2350 次 |
| 最近记录: |