django文件上传excel表格

views.py

def upload(request):
    '''
    :param request:
    :return: 上传文件excel表格 ,并进行解析
    '''
    if request.method == "POST":
        print("post request")
        myform = FileUploadForm(request.POST, request.FILES)

        #在这里可以添加筛选excel的机制
        if myform.is_valid():
            # print(myform)
            f = request.FILES['my_file']
            print(f)

            #开始解析上传的excel表格
            wb = xlrd.open_workbook(filename=None, file_contents=f.read())  # 关键点在于这里
            table = wb.sheets()[0]
            nrows = table.nrows  #行数
            ncole = table.ncols  #列数
            print("row :%s, cole: %s" % (nrows, ncole))

            for i in range(1, nrows):
                rowValues = table.row_values(i)  #一行的数据

                print(type(rowValues[10]))
                R_projectname=rowValues[1]

                print('rowValues-->{}'.format(R_projectname))

                pf = PhoneMsg.objects.filter(M_name = R_projectname)
                # pf = PhoneMsg.objects.all()
                if not pf.exists():   #空值
                    return render(request,'rc_test/upFileFail.html',context={'error':u'R_projectname 不存在,联系管理员进行添加!'})

                print(pf)

                pm = PhoneMsg.objects.get(M_name =R_projectname)
                pm.save()
                re = Result()           #实例化result表
                re.R_projectname = R_projectname
                re.R_name = rowValues[2]
                re.R_version = rowValues[3]
                re.R_context = rowValues[4]
                re.R_result = rowValues[5]
                re.R_note = rowValues[6]
                re.R_ower = rowValues[7]
                re.R_kexuan = rowValues[8]
                re.R_inning = rowValues[9]
                re.R_createtime = datetime(*xldate_as_tuple(rowValues[10],0))
                print(datetime(*xldate_as_tuple(rowValues[10],0)))
                re.save()
                pm.result.add(re)

            handle_upload_file(f, str(f))        #上传文件处理

        return render(request, "rc_test/upFileSuccess.html")


    else:
        print("get request")
        myform = FileUploadForm()
    return render(request, 'rc_test/upFile.html', context={'form': myform, 'what': "文件传输"})

前端界面:

    

forms.py

from  django import forms


class FileUploadForm(forms.Form):
    name = forms.CharField(max_length=20,min_length=3,required=True,label='名称:')
    my_file = forms.FileField(label='文件名称:')

fileup.html

    <div class="container">
        <div class="row">

            <div class="col-md-8 col-md-offset-2">
                <div><h3 style="text-align: center">{{what}}</h3></div>
                <form method="post" enctype="multipart/form-data" action="{% url 'upload' %}"
                      class="table table-bordered form-horizontal">
                    {% csrf_token %}
                    {{ form.as_p }}
                    <input type="submit" value="提交"/>
                </form>

            </div>

        </div>
    </div>

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值