2016-07-14 45 views
-2

Ich versuche, eine Spalte in Excel zu öffnen und alle Werte aus den Zellen in eine Liste zu verschieben.'str' Objekt hat kein Attribut

def open_excel(col, excel_file): 
    open_file = openpyxl.load_workbook(excel_file) 
    sheet_object = open_file.get_sheet_names()[0] 
    cell_vals = [] 
    col_num = column_index_from_string(start_col) 
    for cell in sheet_object.columns[col_num]: 
     cell_vals.append(str(cell.value)) 

Nachdem ich laufen, dass ich den Fehler:

builtins.AttributeError: 'str' object has no attribute 'columns' 

Aber ich habe schon alles so gut importiert.

Hier ist, was ich importiert haben:

import openpyxl 
from openpyxl.cell import get_column_letter, column_index_from_string 
import numpy as np 
import matplotlib.pyplot as plt 
+3

Schauen Sie, wo 'columns' als zugegriffen wird attribute .... 'print (type (sheet_object))' .... schau dir an, wo 'sheet_object' definiert wurde .... Debugging abgeschlossen. – miradulo

Antwort

2

Sie haben einen Blattnamen, ein String-Objekt, zugeordnet sheet_object:

sheet_object = open_file.get_sheet_names()[0] 

get_sheet_names() eine Folge von Strings zurückgibt, nicht von Objekte; Es gibt nur self.sheetnames zurück. Sie müßten diese Namen verwenden, um das eigentliche Blatt-Objekt zu erhalten:

sheet_name = open_file.get_sheet_names()[0] 
sheet_object = open_file[sheet_name] # subscription takes sheet names 

Sie könnten leichter die erste aktive Arbeitsblatt greifen mit:

sheet_object = open_file.worksheets[0] 
+0

@MartijnPieters danke das hat funktioniert – Sasha

Verwandte Themen