2019年10月17日 星期四

Django 讀取 Excel 檔案範例教學


Django 是基於 Python 的框架,

所以許多 Python 上面的套件,

其實在 Django 還是能夠沿用的,

今天就來教大家:

Django 讀取 Excel 檔案範例教學

此範例是以 xlrd 為例子作為範例,

有兩種做法,

一種是上傳檔案儲存後,再透過 xlrd 讀取

第二種方法是不儲存檔案,直接透過 read() 讀取

此處範例是以第二種方法為例子:


首先得先安裝 xlrd

pip install xlrd


要在某個檔案中使用必須

import xlrd


在 Django template 資料夾中新增一個 html 檔案,並加入要傳入的表單:

class="" action="" method="post" enctype="multipart/form-data" >{% csrf_token %} type="file" name="excel">type="submit" value="上傳">


當然在 url.py 也要加入:


path('ximport/', ximport)



再來就是重點戲了:


wb = xlrd.open_workbook(filename=None, file_contents=request.FILES['excel'].read())
table = wb.sheets()[0]
row = table.nrows
for i in range(1, row):
    col = table.row_values(i)
    print(col)


此處範例是每列讀取後將其印出來。

讀取的方法有三種:

data.sheets()[0]
data.sheet_by_index(sheet_indx)
data.sheet_by_name(sheet_name)

前兩者都是照索引順序讀取,

最後一個為照名稱順序讀取,

此處是採用第一種方法為範例。



一般習慣用法為直行橫列,

不過在英文裡

row 是橫列,
column為直行

此處的範例為每列讀取將其印出,

故寫為:


# 總列數 
row = table.nrows
for i in range(1, row):
    col = table.row_values(i)
    print(col)


如果要處理 column 的話,

寫成:


# 總行數 
col = table.ncols
for i in range(1, col):
    row = table.col_values(i)
    print(row)


沒有留言: