¿Cómo se lee el valor de una célula a partir de un archivo de OpenOffice Calc .ods?

StackOverflow https://stackoverflow.com/questions/2740763

  •  02-10-2019
  •  | 
  •  

Pregunta

he podido leer un valor de celda de Excel con XLRD el uso de números de filas y columnas como entradas. Ahora necesito para acceder a los mismos valores de las celdas en algunas hojas de cálculo que se han guardado en formato .ods.

Así, por ejemplo, ¿cómo iba a leer con Python el valor almacenado en la celda E10 en un archivo .ods?

¿Fue útil?

Solución

piratería de su camino a través del XML no debe ser demasiado duro ... pero hay complicaciones. Sólo un ejemplo: OOo en su sabiduría decidió no escribir la dirección de celda de forma explícita. No hay ningún atributo celular como address="E10" o column="E"; que es necesario contar las filas y columnas.

Cinco celdas vacías consecutivas están representados por
<table:table-cell table:number-columns-repeated="5" />

Los valores por defecto de atributos number-colums-repeated a "1", y también se aplica a las células no vacíos.

Se pone peor cuando se tiene celdas combinadas; se obtiene una etiqueta covered-table-cell que es 90% igual que la etiqueta table-cell, y atributos number-columns-spanned y necesidad number-rows-spanned a ser figurado en la columna y la fila contando.

Una etiqueta table:table-row puede tener un atributo number-rows-repeated. Esto se puede usar para repetir el contenido de toda una fila no vacía, pero se ve más a menudo cuando hay más de 1 filas vacías consecutivas.

Por lo tanto, incluso si usted estaría satisfecho con una "trabajos sobre mis datos" enfoque, no es trivial.

Es posible que quiera vistazo a ODFpy . Tenga en cuenta la segunda frase: "" "A diferencia de otras API más convenientes, éste es esencialmente una capa de abstracción justo por encima del formato XML." "" Hay una secuencia de comandos de ODF a HTML, que (si está escrito para las SAO, así como para ODT) puede ser hackable para conseguir lo que desea.

Si usted prefiere un "trabajos sobre los datos casi de todo el mundo y es apoyado y tiene una interfaz que está familiarizado con el" enfoque, es posible que tenga que esperar hasta que la funcionalidad se pone en xlrd ... pero esto no se va a ocurrir pronto.

Otros consejos

A partir de bibliotecas que he intentado ezodf fue la que trabajaba.

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 estrelló , odfpy chocó y además su documentación está ausente o horrible.

Dado que las bibliotecas de trabajo supuestamente murieron en el primer archivo que he probado yo preferiría evitar escribir mi propio procesamiento que tarde o temprano iba a chocar ya sea o lo que es peor error de forma silenciosa en alguna situación más extraña.

EDIT: Se pone peor. ezodf puede silencio devolver datos falsos .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top