如何将user_id放在分开的位置?

时间:2017-09-07 08:31:24

标签: python django excel

我想解析excel&制作字典并连接具有相同user_id字典的模型(User)。 Excel是 excel

user_id在F1中,所以我真的无法理解如何制作字典。 现在views.py是

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

book = xlrd.open_workbook('../data/excel1.xlsx')
sheet = book.sheet_by_index(1)

def build_employee(employee):
  if employee == 'leader':
     return 'l'
  if employee == 'manager':
     return 'm'
  if employee == 'others':
     return 'o'

for row_index in range(sheet.nrows):
  rows = sheet.row_values(row_index) 
  is_man = rows[4] != ""
  emp = build_employee(rows[5])
  user = User(user_id=rows[1], name_id=rows[2], name=rows[3], 
              age=rows[4],man=is_man,employee=emp)
  user.save()

book2 = xlrd.open_workbook('../data/excel2.xlsx')
sheet2 = book2.sheet_by_index(0)
headers = sheet2.row_values(0)

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

    # Create dict with headers and row values
    row_data = {}
    for idx_col, value in enumerate(rows2):
        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
    for row_number, row_data in data_dict.items():
        user1 = User.objects.filter(user_id = data['user_id']).exists()
        if user1:
            user1.__dict__.update(**data_dict)
            user1.save()

我的代码只能在同一个地方捕获数据(在这种情况下是B4~E4),所以我无法理解如何编写来实现我的目标。我该怎么写呢? 理想的字典是

{"user_id":1, "name":"Blear","nationality":"America","domitory":"A","group":1}

1 个答案:

答案 0 :(得分:0)

您的电子表格似乎只有一个条目?如果是这种情况,您不需要遍历行,而只需提取所需的位置,例如:

import xlrd

book = xlrd.open_workbook('excel1.xlsx')
sheet = book.sheet_by_index(0)

cells = [
    ('user_id', 0, 5),
    ('name', 3, 1),
    ('nationality', 3, 2),
    ('domitory', 3, 3),
    ('group', 3, 4)]

user1 = {key:sheet.cell_value(rowy, colx) for key, rowy, colx in cells}

print user1

给你:

{'nationality': u'America', 'user_id': 1.0, 'name': u'Blear', 'group': 1.0, 'domitory': u'A'}

这使用Python字典理解来构建基于user1的{​​{1}}字典。