2016-05-27 2 views
1

Ich arbeite an einem Stück Code von zwei Computern. Ich benutze openpyxl, um Daten aus einem Excel-Blatt zu lesen, mit load_workbook Schlüsselwort Argumente data_only=True und use_iterators=True. Abhängig davon, welchen Computer ich verwende, muss ich entweder cell.value oder cell.internal_value verwenden. Warum ist das der Fall?Verwendung von cell.value vs cell.internal_value für openpexl's iter_rows() Methode

Hier ist der Lese:

raw_rows = [] 
for row in openpyxl_sheet.iter_rows(): 
    # raw_rows.append([cell.internal_value for cell in row]) 
    raw_rows.append([cell.value for cell in row]) 
return raw_rows 

als eine vorübergehende Lösung, ich habe zwischen den Linien 3 und 4

Auf einem Computer tauschen, gibt cell.value mir die Datenzelle und cell.internal_value führt den folgenden Attributfehler:

AttributeError: 'RawCell' object has no attribute 'value' 

auf dem anderen Computer, die beide cell.value und cell.internal_value geben Sie mir Daten, aber nur cell.internal_value gibt die richtigen Daten.

Von dem, was ich vom Lesen anderer Fragen auf der Website erzählen kann, sollte ich cell.internal_value für beide verwenden. Ich habe Anaconda benutzt, um openpyxl auf beiden Rechnern zu installieren.

+0

Vor openpxl Version 2 war die API für die verschiedenen Modi unterschiedlich. : -/Das ist nicht mehr der Fall. Bei der Arbeit an verschiedenen Rechnern lohnt es sich immer, die gleiche Version der Bibliotheken auf jedem Rechner zu verwenden. –

Antwort

0

Ich verwendete eine andere Version von openpyxl auf jedem Computer. Ich hatte gedacht, sie würden die gleichen sein, seit ich Anaconda benutzt habe, um sie zu installieren. Die Probleme wurden mit conda update openpyxl behoben. Nach der Aktualisierung funktioniert die Verwendung von cell.value für beide.

Ich überlasse die Frage, falls ein anderer Benutzer eine Lösung finden kann, die nicht davon ausgeht, dass Sie die Version von openpyx ändern können.

Verwandte Themen