说明
在访问 Django 接口时候,输出信息
信息保存成为 csv 文件
解决中文乱码问题
方法1
需求
csv 库
codes 库
代码
from django.shortcuts import HttpResponse
from django.http import HttpRequest
import csv
import codecs
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def csvexport(reqeust):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
response.write(codecs.BOM_UTF8)
writer = csv.writer(response)
line_title = ["user_name", "dept", "user_status"]
writer.writerow(line_title)
new_line=[]
str3 = "阿斯顿发斯蒂芬"
str1 = "您是不是要找"
str2 = '翻译此页'
new_line.append(str3)
new_line.append(str1)
new_line.append(str2)
writer.writerow(new_line)
return response
简单说明
HttpResponse(content_type=‘text/csv’)
定义了返回的 csv 格式
response[‘Content-Disposition’] = ‘attachment; filename=“somefilename.csv”’
定义了保存的文件名
line_title = [“user_name”, “dept”, “user_status”]
csv 写入例子
csv 默认按行进行写入
每个列就是一个 list 元素
假如需要在 csv 保留空格子, 建议定义为 ’ ’response.write(codecs.BOM_UTF8)
支持中文的方法
writer.writerow(new_line)
new_line 需要是 list 格式
list 是有序的
writerow 写入一行的意思return response
返回内存中的信息,浏览器会保存为一个 csv 文件
方法2
需求
unicodecsv 库
代码
from django.shortcuts import HttpResponse
from django.http import HttpRequest
import unicodecsv
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def tt(reqeust):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
writer = unicodecsv.writer(response,encoding='utf-8-sig')
line_title = ["user_name", "dept", "user_status"]
writer.writerow(line_title)
new_line=[]
str3 = "阿斯顿发斯蒂芬"
str1 = "您是不是要找"
str2 = '翻译此页'
new_line.append(str3)
new_line.append(str1)
new_line.append(str2)
writer.writerow(new_line)
return response