django upload, download excel

Regarding the url.py view.py html template part of the example part only put here

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

index.html in template

<!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>

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325440252&siteId=291194637