关于这里只把示例部分的url.py view.py html模板部分
url.py
from django.conf.urls import include, url
from django.contrib import admin
from mysites.views import index, upload_file, report_down_load
urlpatterns = [
# Examples:
# url(r'^$', 'untitled1.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^index/$', index),
url(r'^upload_file/$', upload_file),
url(r'^report_down_load/$', report_down_load),
]
view.py
from django.http import HttpResponse
from django.shortcuts import render, render_to_response
import os
import xlrd
# Create your views here.
from django.template import RequestContext
from django.views.decorators.csrf import csrf_exempt
def index(request):
return render_to_response("index.html", '', context_instance=RequestContext(request))
@csrf_exempt
def upload_file(request):
if request.method == 'POST':
myFile = request.FILES.get('myfile', None)
if not myFile:
return HttpResponse('no file for upload')
excelFile = open(os.path.join('/Users/eruake/Desktop/code/hkwork/untitled1/', myFile.name), 'wb+')
for chunk in myFile.chunks():
excelFile.write(chunk)
excelFile.close()
#
excel = xlrd.open_workbook('/Users/eruake/Desktop/code/hkwork/untitled1/'+myFile.name)
sheet = excel.sheet_by_index(0)
# sheet = excel.sheet_by_name('mywork')
nrows = sheet.nrows
for i in range(nrows):
# get value you can save to database
v = sheet.cell(0, 0).value
return HttpResponse('upload over!')
import xlwt
import django.utils.timezone as timezone
@csrf_exempt
def report_down_load(request):
wb = xlwt.Workbook()
sheet = wb.add_sheet('report')
filename = timezone.now().strftime("%Y%m%d %H%M%S") + '.xls'
#
# set data
# and set xls file style 这里要说明一点的时,我们可以设置excel模板的样式,可以通过xlrd先读取,再使用xlutils.copy
# 来实现写,但是由于xlutils是不能读取复制样式,如背景颜色 字体样式等 所以我建议直接使用xlwt来控制样式
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=' + filename
wb.save(response)
return response
template 里的index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form enctype="multipart/form-data" action="/upload_file/" method="post">
<input type="file" name="myfile" />
<br/>
<input type="submit" value="upload"/>
</form>
<p>------------------------</p>
<form enctype="multipart/form-data" action="/report_down_load/" method="post">
<input type="submit" value="download"/>
</form>
</body>
</html>