Archivos .ods - XLRG - 30-06-2025
Buenas tardes:
Cómo puedo leer/escribir datos en un archivo Calc de LibreOffice, recorriendo las celdas según su posición (columna/fila?????
RE: Archivos .ods - vuott - 30-06-2025
En mi opinión, necesitas conocer el protocolo de construcción del archivo ods.
RE: Archivos .ods - Shordi - 01-07-2025
Un archivo .ods (igual que un archivo docx o odt) es un archivo comprimido. Si abres un archivo .ods con el Gestor de Archivadores, es decir, el manejador de archivos comprimidos, verás la estructura interna del mismo. Si entonces te atreves, una vez entiendas la estructura (básicamente un .xml) podrás manipularlo.
Sin embargo eso es muy complejo. Te aconsejo una cosa: El paquete LibreOffice tiene un una utilidad llamada Convert, con ella puedes convertir cualquier formato de los que libreOffice entiende en cualquier otro. Utilízala para convertir el .ods en un, por ejemplo, .csv y después de modificar lo que necesites, vuelve a convertirlo en .ods. Las limitaciones que esto tiene son evidentes (si tienes funciones agregadas o fórmulas o macros o lo que sea, a parte de los datos, no funcionará), pero para cosas sencillas vale. En algún lugar tengo hechas esas funciones de conversión... pero sin saber qué quieres y para qué, me da pereza ponerme a buscarlas.
Saludos.
RE: Archivos .ods - cogier - 01-07-2025
sto puede hacerse así: -
1/. Abra el archivo .ods y elimine todas las comas o cámbielas por punto y coma.
2/. Guarde el archivo como archivo .csv
3/ Cargue el archivo .csv en Gambas con
Código: Dim sData As String[]
sData = Split(File.Load("myCSV.csv"), gb.NewLine, "", True)
4/. Ahora puede dividir cada línea de la matriz por una coma
Cada línea del array es una Fila y puedes Dividir cada Fila como Columnas
RE: Archivos .ods - vuott - 01-07-2025
(01-07-2025, 12:00)cogier escribió: sto puede hacerse así: - 1) Abrir el archivo .ods con que programa ?
2) En fin como guardar el archivo en .ods ? Es necesario restablecer las comas ?
RE: Archivos .ods - XLRG - 01-07-2025
(01-07-2025, 08:27)Shordi escribió: Un archivo .ods (igual que un archivo docx o odt) es un archivo comprimido. Si abres un archivo .ods con el Gestor de Archivadores, es decir, el manejador de archivos comprimidos, verás la estructura interna del mismo. Si entonces te atreves, una vez entiendas la estructura (básicamente un .xml) podrás manipularlo.
Sin embargo eso es muy complejo. Te aconsejo una cosa: El paquete LibreOffice tiene un una utilidad llamada Convert, con ella puedes convertir cualquier formato de los que libreOffice entiende en cualquier otro. Utilízala para convertir el .ods en un, por ejemplo, .csv y después de modificar lo que necesites, vuelve a convertirlo en .ods. Las limitaciones que esto tiene son evidentes (si tienes funciones agregadas o fórmulas o macros o lo que sea, a parte de los datos, no funcionará), pero para cosas sencillas vale. En algún lugar tengo hechas esas funciones de conversión... pero sin saber qué quieres y para qué, me da pereza ponerme a buscarlas.
Saludos.
Muchas gracias por la respuesta, realmente creo que no me da resultado, porque necesito llenar datos en hojas que ya tienen un formato determinado y fórmulas. Finalmente creo que lo haré web
(01-07-2025, 12:00)cogier escribió: sto puede hacerse así: -
1/. Abra el archivo .ods y elimine todas las comas o cámbielas por punto y coma.
2/. Guarde el archivo como archivo .csv
3/ Cargue el archivo .csv en Gambas con
Código: Dim sData As String[]
sData = Split(File.Load("myCSV.csv"), gb.NewLine, "", True)
4/. Ahora puede dividir cada línea de la matriz por una coma
Cada línea del array es una Fila y puedes Dividir cada Fila como Columnas
Muchas gracias por la respuesta, realmente creo que no me da resultado, porque necesito llenar datos en hojas que ya tienen un formato determinado y fórmulas. Finalmente creo que lo haré web
(30-06-2025, 20:29)vuott escribió: En mi opinión, necesitas conocer el protocolo de construcción del archivo ods.
Muchas gracias por la respuesta, ya vi que es bastante complejo, intentaré otras opciones
RE: Archivos .ods - tincho - 01-07-2025
El archivo .ods es un archivo .zip en realidad, dentro tiene unas carpetas y unos archivos, por ejemplo:
Código: drwxrwxr-x 11 user group 4096 Jul 1 17:56 Configurations2
-rw-rw-r-- 1 user group 5553 Jul 1 15:50 content.xml
-rw-rw-r-- 1 user group 899 Jul 1 15:50 manifest.rdf
drwxrwxr-x 2 user group 4096 Jul 1 17:56 META-INF
-rw-rw-r-- 1 user group 840 Jul 1 15:50 meta.xml
-rw-rw-r-- 1 user group 46 Jul 1 15:50 mimetype
-rw-rw-r-- 1 user group 9370 Jul 1 15:50 settings.xml
-rw-rw-r-- 1 user group 15352 Jul 1 15:50 styles.xml
drwxrwxr-x 2 user group 4096 Jul 1 17:56 Thumbnails
Luego los datos estan en un archivo XML llamado content.xml ese es el archivo a cargar y recorrer, y tiene la siguiente estructura:
Código: <table:table table:name="Sheet1" table:style-name="ta1">
<table:table-column table:style-name="co1" table:default-cell-style-name="Default"/>
<table:table-column table:style-name="co2" table:number-columns-repeated="5" table:default-cell-style-name="Default"/>
<table:table-row table:style-name="ro1" table:number-rows-repeated="4">
<table:table-cell table:number-columns-repeated="6"/>
</table:table-row>
<table:table-row table:style-name="ro1">
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>x</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>Gambas</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>Python</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>C++</text:p>
</table:table-cell>
<table:table-cell table:number-columns-repeated="2"/>
</table:table-row>
<table:table-row table:style-name="ro1">
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>z</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="float" office:value="1" calcext:value-type="float">
<text:p>1</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="float" office:value="2" calcext:value-type="float">
<text:p>2</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="float" office:value="3" calcext:value-type="float">
<text:p>3</text:p>
</table:table-cell>
<table:table-cell table:number-columns-repeated="2"/>
</table:table-row>
<table:table-row table:style-name="ro1">
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>w</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>a</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>b</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
<text:p>c</text:p>
</table:table-cell>
<table:table-cell table:number-columns-repeated="2"/>
</table:table-row>
<table:table-row table:style-name="ro1">
<table:table-cell table:number-columns-repeated="6"/>
</table:table-row>
<table:table-row table:style-name="ro1">
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>s</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>t</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>u</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>v</text:p>
</table:table-cell>
<table:table-cell/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>r</text:p>
</table:table-cell>
</table:table-row>
</table:table>
![[Imagen: aYXnYLHl.png]](https://i.imgur.com/aYXnYLHl.png)
Asi que finalmente puedes leer y escribir datos con el componente gb.xml, este componente tiene herramientas para gestionar los nodos XML y el texto es una propiedad del nodo. no tengo a mano un codigo que haga esa parte pero puedo buscarlo.
RE: Archivos .ods - cogier - 01-07-2025
No es complejo. ¿Puede enviar un archivo .ods de ejemplo y le mostraré cómo hacerlo?
Para responder vuott: - Libreoffice Calc abrirá archivos .ODS y los guardará como archivos .CSV al igual que los siguientes programas.
Microsoft Excel
Google Sheets
Calligra Sheets
Gnumeric
Collabora Office Calc
FileApp
IBM Lotus Symphony Spreadsheets
No es necesario cambiar todas las comas, pero para un primer programa esto será lo más sencillo.
RE: Archivos .ods - tincho - 01-07-2025
Un archivo .CSV no es un .ODS
|