【发布时间】:2019-06-24 20:14:55
【问题描述】:
为了更加熟悉django,我决定建立一个网站,让用户上传一个csv文件,然后将其转换为excel,用户就可以下载了。
为了实现这一点,我创建了一个带有 model FileField 的模型表单,名为 csv_file,如下所示:
#models.py
class CSVUpload(models.Model):
csv_file = models.FileField(upload_to="csvupload/")
def __str__(self):
return self.csv_file
#forms.py
class CsvForm(forms.ModelForm):
class Meta:
model = CSVUpload
fields = ('csv_file', )
对应的视图是:
from django.shortcuts import render, redirect
import pandas as pd
import os
#converts file from csv to excel
def convertcsv2excel(filename):
fpath = os.path.join(settings.MEDIA_ROOT + "\csvupload", filename)
df = pd.read_csv(fpath)
newfilename = str(filename) +".xlsx"
newpathfile = os.path.join(settings.MEDIA_ROOT, newfilename)
df.to_excel(newpathfile, encoding='utf-8', index=False)
return newfilename
def csvtoexcel(request):
if request.method == 'POST':
form = CsvForm(request.POST, request.FILES)
if form.is_valid():
form.save()
print(form.cleaned_data['csv_file'].name)
convertcsv2excel(form.cleaned_data['csv_file'].name)
return redirect('exceltocsv')
else:
form = CsvForm()
return render(request, 'xmlconverter/csvtoexcel.html',{'form': form})
现在你可以看到我正在使用 Pandas 将 csv 文件转换为 views.py 文件中的 excel。我的问题是,有没有更好的方法(例如在表单或模型模块中)以使 excel 文件更有效地下载?
感谢您提供的任何帮助!
【问题讨论】:
标签: python django file file-conversion