欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用django如何解析用戶上傳的excel文件

 更新時間:2017年07月24日 11:36:34   作者:Roy  
這篇文章主要給大家介紹了關于利用django如何解析用戶上傳的excel文件的相關資料,這是最近在工作中遇到的一個問題,覺著有必要分享出給大家,需要的朋友可以參考借鑒,下面來一起看看詳細的介紹吧。

前言

我們在工作中的時候,會有這種需求:用戶上傳一個格式固定excel表格到網站上,然后程序負債解析內容并進行處理。我最近在工作中就遇到了,所以想著將解決的過程總結分享出來,方便大家參考學習,下面話不多說,來一起看看詳細的介紹:

舉一個簡單的栗子,比如我們有這樣一個HTML:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 </head>
 <body>
 <p>上傳EXCEL表格</p>
 <form class="" action="" method="post" enctype="multipart/form-data" >
  {% csrf_token %}
  <input type="file" name="excel">
  <input type="submit" value="上傳">
 </form>
 </body>
</html>

forms.py文件內容如下,編寫一個簡單的判斷后綴的驗證:

# coding=utf-8
from django import forms
from django.utils.translation import gettext as _
from django.core.exceptions import ValidationError
def validate_excel(value):
 if value.name.split('.')[-1] not in ['xls','xlsx']:
 raise ValidationError(_('Invalid File Type: %(value)s'),params={'value': value},)
class UploadExcelForm(forms.Form):
 excel = forms.FileField(validators=[validate_excel]) #這里使用自定義的驗證

處理excel表格我這里使用xlrd庫,使用pip安裝即可。此時處理POST請求時有2種方法:

  • 將用戶上傳的excel存儲到磁盤中再讀取交給xlrd處理。
  • 直接在內存中讀取用戶上傳的excel讀取交給xlrd處理。

這里我使用第二個辦法——在不修改django默認settings.py配置情況下,用戶上傳的文件其實是InMemoryUploadedFile類型,這個類型有一個read()方法,所以views.py中可以內存直接讀取內容而不用寫磁盤再讀取了:

def post(self, request, *args, **kwargs):
 form = UploadExcelForm(request.POST, request.FILES)
 if form.is_valid():
 wb = xlrd.open_workbook(
  filename=None, file_contents=request.FILES['excel'].read()) # 關鍵點在于這里
 table = wb.sheets()[0]
 row = table.nrows
 for i in xrange(1, row):
  col = table.row_values(i)
  print col
 return HttpResponse("ok")

其他文件類型同理,如果不需要保存用戶上傳的文件到硬盤其實都可以這么處理。這里記錄2個和django處理excel有關的資源:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • python 繪圖模塊matplotlib的使用簡介

    python 繪圖模塊matplotlib的使用簡介

    這篇文章主要介紹了python 繪圖模塊matplotlib的使用簡介,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • PyTorch中torch.nn模塊的實現

    PyTorch中torch.nn模塊的實現

    torch.nn是PyTorch中用于構建神經網絡的核心模塊,包括多種組件,每個組件都有其特定的原理和使用場景,本文就來詳細的介紹一下如何使用,感興趣的可以了解一下
    2024-09-09
  • python實現多線程采集的2個代碼例子

    python實現多線程采集的2個代碼例子

    這篇文章主要介紹了python多線程采集代碼例子,使用了Threading、Queue、MySQLdb等模塊,需要的朋友可以參考下
    2014-07-07
  • 對python:循環(huán)定義多個變量的實例詳解

    對python:循環(huán)定義多個變量的實例詳解

    今天小編就為大家分享一篇對python:循環(huán)定義多個變量的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python實戰(zhàn)之IQ測試系統的實現

    Python實戰(zhàn)之IQ測試系統的實現

    通常,智商測試測驗一個人在數字、空間、邏輯、詞匯、創(chuàng)造、記憶等方面的能力。本文將利用Python實現一個IQ測試系統,感興趣的可以了解一下
    2022-09-09
  • Python小工具之消耗系統指定大小內存的方法

    Python小工具之消耗系統指定大小內存的方法

    今天小編就為大家分享一篇Python小工具之消耗系統指定大小內存的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python read函數按字節(jié)(字符)讀取文件的實現

    Python read函數按字節(jié)(字符)讀取文件的實現

    這篇文章主要介紹了Python read函數按字節(jié)(字符)讀取文件的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • jmeter中用python實現請求參數的隨機方式

    jmeter中用python實現請求參數的隨機方式

    首先,需下載Jython插件于https://www.jython.org/download后,將其放入JMeter的lib目錄并重啟JMeter,其次,添加JSR223PreProcessor并選擇Python作為語言,編寫腳本,其中metrics_ids3和metrics_weidu3為列表變量
    2024-10-10
  • django將網絡中的圖片,保存成model中的ImageField的實例

    django將網絡中的圖片,保存成model中的ImageField的實例

    今天小編就為大家分享一篇django將網絡中的圖片,保存成model中的ImageField的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • keras 指定程序在某塊卡上訓練實例

    keras 指定程序在某塊卡上訓練實例

    這篇文章主要介紹了keras 指定程序在某塊卡上訓練實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論