Django讀取EXcel


前端重要代碼 

<div class="row">
    <div>
        <form action="" method="post" enctype="multipart/form-data">
            <input type="file" name="file_obj">
            <!--  <input type="text" name="project_pk" hidden value="{{ project_pk }}">  -->
            <input type="submit" value="提交">
        </form>
        <span style="color: red">{{ error }}</span>
    </div>
</div>
{% endblock %}

重點是form表前要有enctype="multipart/form-data"字段標識,不然Django后台無法識別這個是文件類型的數據;上傳文件的input字段的type類型要是file類型。
再來看views視圖處理:

from django.shortcuts import render, redirect, HttpResponse
from django.db import transaction
def import_case(request, pk):
    """ 導入Excel數據,pk是所屬項目的pk """
    if request.method == 'POST':
        try:
            with transaction.atomic():   # 事物
                # project_pk = request.POST.get("project_pk")  # 數據庫使用字段
                excel = request.FILES.get('file_obj')
                book = xlrd.open_workbook(filename=None, file_contents=excel.read())
                sheet = book.sheet_by_index(0)
                title = sheet.row_values(0)
                for row in range(1, sheet.nrows):  
                    print(sheet.row_values(row))    # 這里取出來每行的數據,就可以寫入到數據庫了
                return HttpResponse('OK')
        except Exception as e:
            print(e)
            return render(request, 'import_case.html', {"project_pk": pk, "error": "上傳文件類型有誤,只支持 xls 和 xlsx 格式的 Excel文檔"})

    return render(request, 'import_case.html', {"project_pk": pk, "error": ""})

 

see also:Django上傳並讀取Excel


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM