【Python】导出csv文件,解决Excel乱码
2018-11-13 11:24
429 查看
版权声明:本文为博主原创文章,如有不同见解,敬请评论指正。 https://blog.csdn.net/qq_41902687/article/details/84025983
使用Python提供的csv模块,导出excel文件,指定编码格式后,在Windows中打开依然出现乱码,原因:Windows的Excel使用BOM来确定文件是UTF8编码,将BOM写在文件开头即可。
使用csv模块,配合django.http.StreamingHttpResponse使用生成器进行流式传输
流式传输csv, 并解决windows乱码问题
创建Echo类,用于暂存数据
class Echo(object): def write(self, value): return value
在view.py中返回csv格式文件
import csv import codecs from itertools import chain from django.http import StreamingHttpResponse from utils import generate_table # 生成表格数据 def export_csv(request, *args, **kwargs): table = generate_table() pseudo_buffer = Echo() pseudo_buffer.write(codecs.BOM_UTF8) # 用于excel识别UTF8编码 writer = csv.writer(pseudo_buffer, dialect='excel') response = StreamingHttpResponse( (writer.writerow(row) for row in table)), content_type="text/csv") response['Content-Disposition'] = f'attachment; filename={filename}' return response
另外,Django还提供了FileResponse用于返回文件类型的响应,FileResponse继承于StreamHttpResponse.
相关文章推荐
- Python处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题
- JAVA以UTF-8导出CSV文件,用excel打开产生乱码的解决方法
- 文件、导出-在Mac系统下Excel转csv文件中文乱码问题解决-by小雨
- python 写csv文件,excel打开中文乱码解决方法
- 导出CSV格式文件,用Excel打开乱码的解决办法
- python解决导出excel文件时中文文件名乱码
- 导出CSV格式文件,用Excel打开乱码的解决办法
- 导出CSV格式文件,用Excel打开乱码的解决办法
- JAVA以UTF-8导出CSV文件,用excel打开产生乱码的解决方法
- EXCEL打开CSV文件乱码的解决方法
- 数据库中导出CSV文件与EXCEL文件数据对比可能遇到的问题与解决方法
- 解决Excel打开UTF-8编码的CSV文件乱码的问题 推荐
- EXCEL打开CSV文件乱码的解决方法
- Asp.NET导出Excel文件乱码解决若干方法
- JAVA/SERVLET 以UTF-8导出CSV文件时产生乱码的解决方法
- 解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG
- 解决PLSQL Developer导出CSV文件数据显示乱码和科学计数法问题
- MySQL Workbench导出csv格式文件打开后发现数据乱码解决方法
- 在Mac系统下Excel转csv文件中文乱码问题解决
- mysql导出csv文件excel打开后数字用科学计数法显示且低位变0的解决方法