TypeError: 'Cell' object does not support indexing

TypeError: 'Cell' object does not support indexing

我想解析 excel 并将数据放入模型(用户)中。 我收到一个错误,

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/xxx/testapp/app/views.py", line 17, in <module>
    is_man = row[4] != ""
TypeError: 'Cell' object does not support indexing

views.py 是

#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(row_index)  
        print(row[1]) 
  for row in rows:
        is_man = row[4] != ""
        user = User(user_id=row[1], name_id=row[2], age=row[3], man=is_man)
        user.save()

我认为行不是单元格而是列表,所以我真的不明白为什么它被称为 'Cell' 以及我应该如何解决这个问题。 我试图解决这个问题,所以将行单元格更改为列表,如

for row_index in range(sheet.nrows):
        rows = sheet.row(row_index) 
        rows = list(rows) 
        print(rows) 

但是,同样的错误 happens.What 我应该如何解决这个问题? 现在,views.py是

#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(row_index)  
        print(rows[1]) 
  for row in rows:
        is_man = rows[4] != ""
        user = User(user_id=row[1], name_id=row[2], age=row[3], man=is_man)
        user.save()

我在print(rows[1])中看到了数据,所以是

user_id
1
2
3

所以我只能得到user_id data.It不是我理想的数据,我想得到每个用户数据,比如

1   1   40      leader

我试图解决这个问题并重写 print(rows[1][0]) ,所以 TypeError: 'Cell' object does not support indexing 错误 happens.How 我应该做我理想的事情吗?

当我输出print(rows[4])时,就像

text:'man'
empty:''
text:'●'
empty:''

这很自然,因为 excel 数据是

使用 sheet.row_values(row_index, start_col_index, end_col_index[option]) 而不是 sheet.row() 因为 sheet.row() returns Cell 对象不是 Cell 值。

希望对您有所帮助。