视图函数:直接返回csv或excel
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