import csv
with open("a.csv","w",newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["a","b","c"])
def test_csv_view(request):
from bookstore.models import Book
response = HttpResponse(content_type="test/csv")
response['Content-Disposition'] = 'attachment;filename="test_csv.csv"'
all_book = Book.objects.all()
writer = csv.writer(response)
writer.writerow(["id","title"])
for i in all_book:
writer.writerow([i.id,i.title])
return response
视图函数,用request.FILES 取文件框内容
file = request.FILES[“xxx”]
setting.py
添加
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,"media")
urls.py
添加
from django.conf import settings
from django.conf.urls.static import static
urlpatterns +=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
文件写入方案
@csrf.csrf_exempt
def test_upload1(request):
if request.method == "GET":
return render(request,"test_upload.html")
if request.method == "POST":
a_file = request.FILES["myfile"]
print("上传文件",a_file.name)
filename = os.path.join(settings.MEDIA_ROOT,a_file.name)
with open(filename,"wb") as f:
data = a_file.file.read()
f.write(data)
return HttpResponse("接受文件成功")
字段: FileField(upload=”子目录名”)
存储路径
@csrf.csrf_exempt
def test_upload2(request):
if request.method == "GET":
return render(request,"test_upload.html")
if request.method == "POST":
title = request.POST.get("title")
a_file = request.FILES["myfile"]
content.object.create(desc=title,myfile=a_file)
return HttpResponse("接受文件成功")
content→模型类
查看上传文件
http://127.0.0.1:8000/media/类字段名/图片名
有模板
import xlrd
from xlutils.copy import copy
import xlwt
import os
import datetime
from django.http import FileResponse
def get_file_path(file_type):
app_file_save_path = r'D:\Desktop\pythonProject1\test1'
path = os.path.join(app_file_save_path, file_type)
if not os.path.exists(path):
os.makedirs(path)
return path
def excel(request):
template = xlrd.open_workbook('D:\Desktop\pythonProject1\emplate.xls', formatting_info=True)
export_file = copy(template)
sheet = export_file.get_sheet(0)
style = xlwt.XFStyle()
borders = xlwt.Borders()
font = xlwt.Font()
font.height = 220
borders.left = 1
borders.right = 1
borders.top = 1
borders.bottom = 1
borders.bottom_colour = 0x3A
style.font = font
style.borders = borders
for row, num in enumerate(range(3)):
sheet.write(row + 6, 0,
f'{num}', style)
export_path = get_file_path('ceshi')
export_file_name = "feedback_export" + f"{datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}.xls"
export_file_path = os.path.join(export_path, export_file_name)
export_file.save(export_file_path)
f = open(export_file_path, 'rb')
response = FileResponse(f)
response['Content-Type'] = 'application/octet-stream'
export_file_name = os.path.basename(export_file_path)
response['Content-Disposition'] = 'attachment;filename=%s' % export_file_name
return response
无模板
def excel(request):
export_path = get_file_path("临时文件保存位置")
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('sheet1')
export_file_name = "文件名.xls"'))
export_file_path = os.path.join(export_path, export_file_name)
head_style = xlwt.XFStyle()
head_borders = xlwt.Borders()
head_font = xlwt.Font()
head_font.height = 240
head_font.bold = True
head_borders.left = 1
head_borders.right = 1
head_borders.top = 1
head_borders.bottom = 1
head_borders.bottom_colour = 0x3A
head_style.font = head_font
head_style.borders = head_borders
data_style = xlwt.XFStyle()
data_borders = xlwt.Borders()
data_font = xlwt.Font()
data_font.height = 220
data_borders.left = 1
data_borders.right = 1
data_borders.top = 1
data_borders.bottom = 1
data_borders.bottom_colour = 0x3A
data_style.font = data_font
data_style.borders = data_borders
head_list = list("表头名的列表")
head_col = 0
for a_head in head_list:
worksheet.write(0, head_col, a_head, head_style)
head_col += 1
data_row = 1
for trouble in troubles:
worksheet.write("行号", "列号", f'数据', data_style)
workbook.save(export_file_path)
return export_file_path
Original: https://blog.csdn.net/weixin_43640594/article/details/122662874
Author: weixin_43640594
Title: Django 生成CSV文件(打开页面后生成CSV数据,下载到电脑),文件上传
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/735706/
转载文章受原作者版权保护。转载请注明原作者出处!