最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

舉一個簡單的栗子,比如我們有這樣一個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文件內(nèi)容如下,編寫一個簡單的判斷后綴的驗證:

# 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處理。
  • 直接在內(nèi)存中讀取用戶上傳的excel讀取交給xlrd處理。

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

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()) # 關(guān)鍵點在于這里
 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有關(guān)的資源:

總結(jié)

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

相關(guān)文章

  • Pytorch的torch.utils.data中Dataset以及DataLoader示例詳解

    Pytorch的torch.utils.data中Dataset以及DataLoader示例詳解

    torch.utils.data?是?PyTorch?提供的一個模塊,用于處理和加載數(shù)據(jù),該模塊提供了一系列工具類和函數(shù),用于創(chuàng)建、操作和批量加載數(shù)據(jù)集,這篇文章主要介紹了Pytorch的torch.utils.data中Dataset以及DataLoader等詳解,需要的朋友可以參考下
    2023-08-08
  • Python分支語句與循環(huán)語句應(yīng)用實例分析

    Python分支語句與循環(huán)語句應(yīng)用實例分析

    這篇文章主要介紹了Python分支語句與循環(huán)語句應(yīng)用,結(jié)合具體實例形式詳細分析了Python分支語句與循環(huán)語句各種常見應(yīng)用操作技巧與相關(guān)注意事項,需要的朋友可以參考下
    2019-05-05
  • 使用python繪制3維正態(tài)分布圖的方法

    使用python繪制3維正態(tài)分布圖的方法

    今天小編就為大家分享一篇使用python繪制3維正態(tài)分布圖的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python中賦值的含義及說明

    Python中賦值的含義及說明

    這篇文章主要介紹了Python中賦值的含義及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Django Admin實現(xiàn)三級聯(lián)動的示例代碼(省市區(qū))

    Django Admin實現(xiàn)三級聯(lián)動的示例代碼(省市區(qū))

    多級菜單在很多上面都有應(yīng)用,這篇文章主要介紹了Django Admin實現(xiàn)三級聯(lián)動(省市區(qū)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • python sorted方法和列表使用解析

    python sorted方法和列表使用解析

    這篇文章主要介紹了python sorted方法和列表使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Python利用Rows快速操作csv文件

    Python利用Rows快速操作csv文件

    Rows?是一個專門用于操作表格的第三方Python模塊。只要通過?Rows?讀取?csv?文件,她就能生成可以被計算的?Python?對象。本文將通過示例為大家詳細講講Python如何利用Rows快速操作csv文件,需要的可以參考一下
    2022-09-09
  • Python遠程控制Windows服務(wù)器的方法總結(jié)

    Python遠程控制Windows服務(wù)器的方法總結(jié)

    在信息時代的洪流中,掌握一門編程語言已經(jīng)成為一項必備技能,Python,這門以簡潔、易學、強大著稱的編程語言,更是成為無數(shù)開發(fā)者的大寶劍,今天,我們要探討的就是如何用 Python 遠程控制 Windows 服務(wù)器,需要的朋友可以參考下
    2024-07-07
  • Python解釋執(zhí)行原理分析

    Python解釋執(zhí)行原理分析

    這篇文章主要介紹了Python解釋執(zhí)行原理,有助于讀者深入理解Python運行機制,需要的朋友可以參考下
    2014-08-08
  • Python基于pygame實現(xiàn)圖片代替鼠標移動效果

    Python基于pygame實現(xiàn)圖片代替鼠標移動效果

    這篇文章主要介紹了Python基于pygame實現(xiàn)圖片代替鼠標移動效果,可實現(xiàn)將鼠標箭頭轉(zhuǎn)換成圖形的功能,涉及pygame圖形操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論

宝鸡市| 高邑县| 英德市| 泸溪县| 云和县| 鸡东县| 阳曲县| 双城市| 高密市| 获嘉县| 上高县| 丹东市| 嘉义市| 福海县| 巫溪县| 芦溪县| 怀柔区| 弥渡县| 永修县| 体育| 吉木乃县| 武乡县| 礼泉县| 平潭县| 额敏县| 邹平县| 盐池县| 肥乡县| 延津县| 贞丰县| 北宁市| 醴陵市| 镇坪县| 葫芦岛市| 华蓥市| 壶关县| 灵宝市| 聂拉木县| 安徽省| 乌恰县| 灯塔市|