1 import codecs
2 from django.shortcuts import HttpResponse
3
4
5 def csv_response(data_list: [tuple, tuple, ...], filename: str):
6 """
7 :param data_list: Such as [('name', 'age'), ('test1', 18), ('test2', 20)]
8 :param filename: xxx.csv
9 :return: HttpResponse object
10 """
11 try:
12 response = HttpResponse(content_type='text/csv;charset=utf-8')
13 response.write(codecs.BOM_UTF8)
14 response['Content-Disposition'] = f'attachment; filename="{filename}"'
15 writer = csv.writer(response, quoting=csv.QUOTE_ALL, delimiter=',', quotechar='"')
16 for row in data_list:
17 writer.writerow(row)
18 return response
19 except Exception as e:
20 raise e
21
22
23 def excel_response(data_list: [tuple, tuple, ...], filename: str):
24 """
25 :param data_list: Such as [('name', 'age'), ('test1', 18), ('test2', 20)]
26 :param filename: xxx.xlsx
27 :return: HttpResponse object
28 """
29 try:
30 response = HttpResponse(content_type='charset=utf-8')
31 response.write(codecs.BOM_UTF8)
32 response['Content-Disposition'] = f'attachment; filename="{filename}"'
33 writer = csv.writer(response)
34 writer.writerows(data_list)
35 return response
36 except Exception as e:
37 raise e