私は解析し、モデル(ユーザ)にデータを入れたいと思います。しかし今、唯一の最後のデータがモデルに入れられ、データの数は4.4であるEXCEL全ての数は今最後のExcelデータのみをモデルに入れます
|10|Karen|||
|10|Karen|||
|10|Karen|||
|10|Karen|||
のような行をエクセルであります
1|1|Blear|40|false|l
2|5|Tom|23|true|o
3|9|Rose|52|false|m
|10|Karen|||
すべてのデータがそこに入力されます。 なぜこのような結果が起こるのですか?私はprint(rows)
の行を印刷するとき views.pyは、結果はので、私は行がExcelですべてのデータを持っていると思う
Blear
Tom
Rose
Karen
#coding:utf-8
from django.shortcuts import render
import xlrd
from .models import User
book = xlrd.open_workbook('../data/data.xlsx')
sheet = book.sheet_by_index(1)
for row_index in range(sheet.nrows):
rows = sheet.row_values(row_index)
print(rows)
def build_employee(employee):
if employee == 'leader':
return 'l'
if employee == 'manager':
return 'm'
if employee == 'others':
return 'o'
for row in rows:
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()
です。 models.pyは、私はこの問題を解決するにはどうすればよい
class User(models.Model):
user_id = models.CharField(max_length=200)
name_id = models.CharField(max_length=200)
name = models.CharField(max_length=200)
age = models.CharField(max_length=200)
man = models.BooleanField()
TYPE_CHOICES = (
('m', 'manager'),
('l', 'leader'),
('o', 'others'),
)
employee =models.CharField(max_length=1, choices=TYPE_CHOICES)
のですか?
'sheet = book.sheet_by_index(1)'を呼び出すことでシート2にアクセスしていることを確認したい場合は、シート1にアクセスしたい場合は 'sheet = book.sheet_by_index(0)'を呼び出す必要があります – kaza
@bulbus私はシート2を読んでいるので大丈夫です。 – user8504021