利用xlrd模組在Django專案中實現Excel檔案匯入
在專案接近尾聲的時候,經常會需要將客戶的一些資料資料匯入到專案中進行測試或者實際使用,大量的資料當然不可能透過手動的方式輸入,這個時候就需要將資料透過Excel檔案匯入到專案中。具體實現方式如下:
1.引入xlrd模組
import xlrd
2.從前端獲取Excel檔案資料物件
excel_file = request.FILES.get('excel_file','')
3.讀取Excel檔案資料物件
常用的Excel檔案有 .xlsx 和 .xls兩種,.xls檔案讀取時需要設定formatting_info=True
data = xlrd.open_workbook(filename=None, file_contents=excel_file.read()) # xlsx檔案data = xlrd.open_workbook(filename=None, file_contents=excel_file.read(), formatting_info=True) # xls檔案
4.獲取Excel中每張表(sheets)的資料內容
get_sheets_mg() # 獲取表中每一行的資料
def get_sheets_mg(data, num): # data:Excel資料物件,num要讀取的表 table = data.sheets()[num] # 開啟第一張表 nrows = table.nrows # 獲取表的行數 ncole = table.ncols # 獲取列數 all_list = [] for i in range(nrows): # 迴圈逐行列印 one_list = [] for j in range(ncole): cell_value = table.row_values(i)[j] if (cell_value is None or cell_value == ''): cell_value = (get_merged_cells_value(table, i, j)) one_list.append(cell_value) all_list.append(one_list) del (all_list[0]) # 刪除標題 如果Excel檔案中第一行是標題可刪除掉,如果沒有就不需要這行程式碼 return all_list
僅僅獲取Excel表中的每一行資料是滿足不了實際需求的,因為Excel中經常會有合併單元格的情況出現,因此還要處理合併單元格情況的函式。
get_merged_cells() # 獲取所有合併的單元格資訊 sheet.merged_cells
def get_merged_cells(sheet): """ 獲取所有的合併單元格,格式如下: [(4, 5, 2, 4), (5, 6, 2, 4), (1, 4, 3, 4)] (4, 5, 2, 4) 的含義為:行 從下標4開始,到下標5(不包含) 列 從下標2開始,到下標4(不包含),為合併單元格 :param sheet: :return: """ return sheet.merged_cells
get_merged_cells_value() # 獲取被合併單元格中的資訊
def get_merged_cells_value(sheet, row_index, col_index): """ 先判斷給定的單元格,是否屬於合併單元格; 如果是合併單元格,就返回合併單元格的內容 :return: """ merged = get_merged_cells(sheet) # print(merged,"==hebing==") for (rlow, rhigh, clow, chigh) in merged: if (row_index >= rlow and row_index < rhigh): if (col_index >= clow and col_index < chigh): cell_value = sheet.cell_value(rlow, clow) # print('該單元格[%d,%d]屬於合併單元格,值為[%s]' % (row_index, col_index, cell_value)) return cell_value break return None
5.將獲取的資料迴圈匯入資料庫中
all_list_1 = get_sheets_mg(data, 0) i = 0while i < len(all_list_1): .... # 儲存省略 i++
作者:零_WYF
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2894/viewspace-2819448/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基礎補充:使用xlrd模組讀取excel檔案Excel
- 匯入excel檔案Excel
- django實現將後臺資料excel檔案形式匯出DjangoExcel
- java程式碼實現excel檔案資料匯入JavaExcel
- python中xlrd庫如何實現檔案讀取?Python
- Java POI匯入Excel檔案JavaExcel
- 「Python實用秘技12」像匯入模組一樣匯入ipynb檔案Python
- django實現分頁的模組(匯入即可用)Django
- EasyExcel完成excel檔案的匯入匯出Excel
- Laravel5.6中使用Laravel/Excel實現Excel檔案匯出功能LaravelExcel
- vue 專案中 實現列表的匯出excel表格的功能VueExcel
- 【python3】匯入zip 檔案裡的模組Python
- 如何使用JavaScript匯入和匯出Excel檔案JavaScriptExcel
- ASP.NET MVC 匯入Excel檔案ASP.NETMVCExcel
- C#中DataGrid匯出Excel檔案C#Excel
- office for Mac Excel匯入csv檔案亂碼MacExcel
- java匯出Excel檔案JavaExcel
- 怎麼在Android專案中匯入ffmpeg庫?Android
- javascript中的匯出和匯入實現模組化管理JavaScript
- MATLAB匯入txt和excel檔案技巧彙總:批量匯入、單個匯入MatlabExcel
- Angular專案中共享模組的實現Angular
- php讀取excel檔案資料的匯入和匯出PHPExcel
- Angular專案中核心模組core Module只載入一次的實現Angular
- 如何實現 node module 模組匯入
- Angular 專案中匯入 styles 檔案到 Component 中的一些技巧Angular
- 向mysql中匯入.sql檔案MySql
- Net.Core匯入EXCel檔案裡的資料Excel
- Django之模組的繼承和匯入Django繼承
- Laravel-admin 匯出excel檔案LaravelExcel
- POI匯出excel檔案加水印Excel
- 在Django中查詢重複專案Django
- wsgi模組在Django中配置Django
- 匯入sql檔案出現亂碼SQL
- Excel VBA 利用FileSystemObject處理檔案ExcelObject
- Python表格處理模組xlrd在Anaconda中的安裝Python
- 利用pearcmd實現裸檔案包含
- Java 匯入資料到Excel並提供檔案下載介面JavaExcel
- Vue + Element 實現匯入匯出ExcelVueExcel