2017-09-06 56 views
1

我想把excel數據放到字典中。 Excel是 excel views.py是如何將excel數據添加到字典中?

#coding:utf-8 
from django.shortcuts import render 
import xlrd 

book3 = xlrd.open_workbook('./data/excel.xlsx') 
sheet3 = book3.sheet_by_index(0) 

large_item = None 
data_dict = {} 
for row_index in range(1,sheet3.nrows): 
    rows3 = sheet3.row_values(row_index) 
    large_item = rows3[1] or large_item 
    data_dict = rows3 

現在,當我打印出來print(data_dict),[ '', '4', '10', '卡倫', '']爲shown.Before,我寫data_dict.extend(rows3)代替data_dict = rows3,但在那個時候字典還沒有擴展錯誤happens.My理想的輸出是

data_dict = { 
    1: { 
     user_id: 1, 
     name_id: 1, 
     name: Blear, 
     age: 40, 
     man: false, 
     employee: leader, 
    }, 
    2: { 
     user_id: 2, 
     name_id: 5, 
      ・ 
       ・ 
       ・ 
    }, 
      ・ 
       ・ 
       ・ 
} 

我應該怎麼寫來實現我的目標?

+0

我們可以解決這個問題,並簡化它。我們可以解析一個csv,而不是解析一個excel。有許多庫支持解析CSV,所以我建議我們這樣做。 –

回答

0

您的問題是:

data_dict = rows3 

這不添加rows3到data_dict,這樣的設定值。所以data_dict等於最後一行。

要添加元素,你需要做這樣一個字典:

data_dict[KEY] = VALUE 

你的關鍵將是該行的索引。

現在,你不想再像字典VALUE

{ 
    user_id: 1, 
    name_id: 1, 
    name: Blear, 
    age: 40, 
    man: false, 
    employee: leader, 
} 

所以每個需要構建該字典,用頭和單元格的值做一行。

我不測試這個代碼,它只是給你一個想法如何去做。

#coding:utf-8 
from django.shortcuts import render 
import xlrd 

book3 = xlrd.open_workbook('./data/excel.xlsx') 
sheet3 = book3.sheet_by_index(0) 

headers = sheet3.row_values(0) 
large_item = None 
data_dict = {} 
for row_index in range(1,sheet3.nrows): 
    rows3 = sheet3.row_values(row_index) 
    large_item = rows3[1] or large_item 

    # Create dict with headers and row values 
    row_data = {} 
    for idx_col,value in enumerate(rows3): 
     header_value = headers[idx_col] 
     # Avoid to add empty column. A column in your example 
     if header_value: 
      row_data[headers[idx_col]] = value 
    # Add row_data to your data_dict with 
    data_dict[row_index] = row_data 
0

您可以使用Python庫pandas一個簡單的解決方案:

from pandas import * 
xls = ExcelFile('your_excel_file.xls') 
df = xls.parse(xls.sheet_names[0]) 
df.to_dict()