Je veux analyser Excel et mettre des données dans le modèle (utilisateur). Cependant maintenant, seule la dernière des données Excel est mis dans le modèle et le nombre des données est 4.4 est le nombre de lignes comme tous Excel Seules les dernières données Excel sont mises dans le modèle
maintenant db.sqlite3 est
|10|Karen|||
|10|Karen|||
|10|Karen|||
|10|Karen|||
Mon idéal db.sqlite3 est
1|1|Blear|40|false|l
2|5|Tom|23|true|o
3|9|Rose|52|false|m
|10|Karen|||
toutes les données que vous voulez y mettre. Pourquoi un tel résultat se produit-il? views.py est
#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()
Quand j'imprime des lignes dans print(rows)
, le résultat est
Blear
Tom
Rose
Karen
donc je pense que les lignes a toutes les données dans Excel. models.py est
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)
Comment puis-je résoudre ce problème?
Je veux juste vérifier que vous accédez à la feuille 2 en appelant 'sheet = book.sheet_by_index (1)', si vous voulez accéder à la feuille 1, vous devez appeler 'sheet = book.sheet_by_index (0)' – kaza
@bulbus c'est ok parce que je veux lire la feuille 2. – user8504021