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': "文件传输"})

前端界面:

    django文件上传excel表格_第1张图片

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

    

{{what}}

{% csrf_token %} {{ form.as_p }}

你可能感兴趣的:(django)