django/python excel 上传后台 并读取excel内容,含日期格式解析处理

step1: 读取上传的excel数据并存档

step2: 读取存入本地的excel文件,对内容进行处理,其中包含日期格式处理

重点代码:

issueDate = sheetContent.cell(row,1).value
date_value = xlrd.xldate_as_tuple(issueDate,workbook.datemode)
import datetime
issueDate = datetime.date(*date_value[:3]).strftime("%Y-%m-%d")
print(issueDate)
def uploadIssue(request):
    if request.method=="GET":
        return render(request,"addUploadIssue.html")
    else:
        file = request.FILES.get("files")
        if file:
            print(file.name, file.size)
            #step1 先进行保存
            from ctcqs import settings
            import uuid,os
            new_fileName = str(uuid.uuid4())+file.name
            new_filePath = os.path.join(settings.MEDIA_ROOT,"temp",new_fileName)
            new_file = open(new_filePath,"wb")
            for item in file.chunks():
                new_file.write(item)
            new_file.close()
            #step2 然后读取存入数据库
            import xlrd
            workbook = xlrd.open_workbook(new_filePath)
            #获取页签内容,也可以by index获取
            sheetContent = workbook.sheet_by_name("Sheet1")
            #获取总行数和总列数
            print(sheetContent.nrows,sheetContent.ncols)
            if sheetContent.nrows<=1:
                return HttpResponse("上传的文件为空或者其他错误")
            #获取excel每个单元格的值,并赋值给issueList Models
            #看看单元格格式ctype ctype :  0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
            print(sheetContent.cell(1,1),sheetContent.cell(1,1).ctype)
            # 从第二行开始取值,第一行是标题
            for row in range(1,sheetContent.nrows):
                #如果有字符乱码 可以加encode ,比如sheetContent.cell(row,0).value.encode("utf-8")
                companyID = sheetContent.cell(row,0).value
                issueDate = sheetContent.cell(row,1).value #时间格式需要特殊处理
                auditPerson = sheetContent.cell(row,2).value  #外键
                issueSite = sheetContent.cell(row,3).value
                issueDept = sheetContent.cell(row,4).value #外键
                issueType = sheetContent.cell(row,5).value  #外键
                issueContent = sheetContent.cell(row,6).value
                issueListQS = sheetContent.cell(row,7).value #外键
                improve = sheetContent.cell(row,8).value
                status = sheetContent.cell(row,9).value
                mark = sheetContent.cell(row,10).value
                hide = False #默认false
                #针对时间格式处理
                date_value = xlrd.xldate_as_tuple(issueDate,workbook.datemode)
                import datetime
                issueDate = datetime.date(*date_value[:3]).strftime("%Y-%m-%d")
                print(13123132,issueDate)


            return HttpResponse("asdf")
        else:
            return HttpResponse("上传的文件为空或者其他错误")

输出结果:

猜你喜欢

转载自blog.csdn.net/java_raylu/article/details/84574583