2015-02-14 12 views
11

-openpyxl I openpyxl bin mit Zellwert lesen (Addin-Webservice-Update diese Spalte übertreffen. )lesen Excel-Zelle Wert und nicht die Formel Berechnung es

ich verwendet habe data_only = True aber es ist nicht die aktuelle Zelle zeigt, Wert ist der Wert, der beim letzten Lesen von Excel in Excel gespeichert wurde.

wbFile = openpyxl.load_workbook(filename = xxxx,data_only=True) 
wsFile = wbFile[c_sSheet] 

Wie kann ich den tatsächlichen Wert der Zelle lesen?

+0

Ich glaube nicht, dass "openpyxl" Excel's große Formel-Bewertung-Subsystem repliziert, so dass ich denke, Sie können es einfach nicht automatisch alle Formeln neu berechnen lassen. Im besten Fall können Sie einen eigenen Eval-basierten Interpreter für eine Teilmenge dieser großen Formelsprache implementieren. –

+0

ich brauche nicht berechnen oder forumula ausführen. Ich muss nur den Zellenwert lesen. – user3411047

+1

"Der Zellenwert" (außerhalb der Formel) wurde von Excel beim Speichern des Arbeitsblatts gespeichert und Sie haben angedeutet, dass es nicht wirklich Ihren Vorstellungen entspricht - Sie möchten den "aktuellen" Wert (abhängig von Werten in anderen Zellen) und das bedeutet, dass Sie die Formel basierend auf den aktuellen Werten anderer Zellen neu berechnen müssen! –

Antwort

3

Wie @ alex-martelli sagt, evaluiert openpyxl keine Formeln. Wenn Sie eine Excel-Datei mit openpyxl öffnen, haben Sie die Wahl, entweder die Formeln oder den zuletzt berechneten Wert zu lesen. Wenn, wie Sie angeben, die Formel von Add-Ins abhängig ist, kann der zwischengespeicherte Wert nie genau sein. Als Add-Ins außerhalb der Dateispezifikation werden sie niemals unterstützt. Stattdessen möchten Sie vielleicht etwas wie xlwings betrachten, das mit der Excel-Laufzeitumgebung interagieren kann.

32
wb = openpyxl.load_workbook(filename, data_only=True) 

Die data_only Flagge hilft.

+1

Ja. Dies beantwortet die Frage. Wenn Sie sowohl auf die Gleichung als auch auf den Wert zugreifen möchten, können Sie in zwei Instanzen enden, sagen Sie 'wb2 = openpyxl.load_workbook (filename)'. Wenn Sie dann den entsprechenden Index lesen, erhalten Sie den Wert von 'wb' und die Gleichung von' wb2'. –

+0

Hallo, ich habe das versucht, aber es funktioniert nicht für mich. Ich bekomme 'None' ... – galeej

+0

@ Galeej wahrscheinlich, weil Ihre Zelle leer ist –

Verwandte Themen