Frage

Ich habe in der Lage, einen Excel-Zelle Wert mit xlrd mit Spalten- und Zeilennummern als Eingänge zu lesen. Jetzt muss ich die gleichen Zellenwerte in einigen Tabellen zuzugreifen, die in .ods-Format gespeichert wurden.

So zum Beispiel, wie würde ich mit Python liest Sie den in Zelle E10 gespeicherten Wert in einer .ods Datei?

War es hilfreich?

Lösung

Hacking Ihren Weg durch die XML nicht zu hart sein ... aber es gibt Komplikationen. Nur ein Beispiel: OOo in ihrer Weisheit beschlossen, nicht die Adresse der Zelle explizit zu schreiben. Es gibt keine Zelle Attribute wie address="E10" oder column="E"; Sie benötigen Zeilen und Spalten zählen.

Fünf aufeinanderfolgende leere Zellen werden durch
vertreten <table:table-cell table:number-columns-repeated="5" />

Das number-colums-repeated Attribut standardmäßig auf „1“ und gilt auch für nicht leere Zellen.

Es wird noch schlimmer, wenn Sie fusionierten Zellen haben; Sie covered-table-cell Tag erhalten, die 90% der gleiche wie der table-cell-Tag ist, und Attribute number-columns-spanned und number-rows-spanned Notwendigkeit rechnete in Spalten- und Zeilenzählung werden.

Ein table:table-row Tag ein number-rows-repeated Attribut haben. Damit kann den Inhalt einer ganzen nicht-leeren Zeile zu wiederholen, ist aber am häufigsten gesehen, wenn es mehr als 1 aufeinanderfolgende leere Zeilen.

Also, auch wenn Sie mit einer „Arbeit auf meinen Daten“ -Ansatz zufrieden sein würden, es ist nicht trivial.

Sie können schauen, wie unter ODFpy . Notieren Sie sich den zweiten Satz: „“ „Im Gegensatz zu anderen bequemen APIs, dies ist im Wesentlichen eine Abstraktionsschicht direkt über das XML-Format.“ „“ Es gibt einen ODF-to-HTML-Skript, das (wenn es für ODS sowie geschrieben für ODT) kann hackable zu bekommen, was Sie wollen.

Wenn Sie ein „Arbeiten auf fast Daten alle und unterstützt und verfügt über eine Schnittstelle, dass Sie mit vertraut sind“ bevorzugen Ansatz, müssen Sie warten, bis die Funktionalität in xlrd gestellt wird ... aber das ist nicht los geschehen bald.

Andere Tipps

Von Bibliotheken, dass ich versuchte ezodf derjenige war, gearbeitet.

from ezodf import opendoc, Sheet
doc = opendoc('test.ods')
for sheet in doc.sheets:
   print sheet.name
   cell = sheet['E10']
   print cell.value
   print cell.value_type

pyexcel-ods abgestürzt , odfpy abgestürzt und zusätzlich seine Dokumentation ist entweder nicht vorhanden oder schrecklich.

Da angeblich Arbeits Bibliotheken auf der ersten Datei gestorben, dass ich getestet und ich habe meine eigene Verarbeitung wie früher zu vermeiden, bevorzugen schreiben oder später würde es entweder zum Absturz bringen oder was noch schlimmer ausfallen leise auf einiger weirder Situation.

EDIT: Es wird noch schlimmer. ezodf kann leise zurückgeben falsche Daten .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top