2012-02-19 47 views
8

Me gustaría convertir mi hoja de cálculo de datos en una matriz JSON de matriz.Archivo ODS en JSON

Este sitio lo hace: http://www.shancarter.com/data_converter/index.html Y miré en el código fuente.

Pero lo que me gustaría es una macro/script/extensión o cualquier forma de Programm para convertir mis .ods en un archivo JSON:

igual:

NAME VALUE COLOR DATE 
Alan 12 blue Sep. 25, 2009 
Shan 13 "green blue" Sep. 27, 2009 
John 45 orange Sep. 29, 2009 
Minna 27 teal Sep. 30, 2009 

Para:

[ 
    ["Alan",12,"blue","Sep. 25, 2009"], 
    ["Shan",13,"green\tblue","Sep. 27, 2009"], 
    ["John",45,"orange","Sep. 29, 2009"], 
    ["Minna",27,"teal","Sep. 30, 2009"] 
] 
+0

¿Estás preguntando sobre esto? http://stackoverflow.com/questions/4745024/spreadsheet-to-python-dictionary-conversion –

+0

Mira en http://pypi.python.org/pypi/odfpy/0.9.4 o http: //pypi.python. org/pypi/ezodf/0.2.1 –

+0

Mi solución: ODS a CSV y CSV a JSON con pequeña secuencia de comandos python – damio

Respuesta

5

La respuesta puede ser otra vez tarde, pero marcoconti83 ha hecho exactamente eso: leer un archivo ods y devolverlos como matrices bidimensionales.

https://github.com/marcoconti83/read-ods-with-odfpy/blob/master/ODSReader.py

Una vez que tenga los datos en las matrices, no es tan difícil de conseguir en un archivo JSON. Aquí está el código de ejemplo:

import json 
from odftoarray import ODSReader # renamed the file to odftoarray.py 

r = ODSReader("your_file.ods") 
arrays = r.getSheet("your_data_sheet_name") 
json.dumps(arrays) 
3

Esto puede ser un poco tarde, pero para aquellos que vengan buscando y quieran hacer esto, probablemente sea mejor guardar el archivo .ods como .csv que pueden hacer casi todos los programas de hoja de cálculo. A continuación, utilizar algo como esto para convertirlo:

import csv 
import sys 
import json, os 


def convert(csv_filename, fieldnames): 
    print ("Opening CSV file: ",csv_filename) 
    f=open(csv_filename, 'r') 
    csv_reader = csv.DictReader(f,fieldnames) 
    json_filename = csv_filename.split(".")[0]+".json" 

    print ("Saving JSON to file: ",json_filename) 
    jsonf = open(json_filename,'w') 
    data = json.dumps([r for r in csv_reader]) 
    jsonf.write(data) 
    f.close() 
    jsonf.close() 


csvfile = ('path/to/the/csv/file.csv') 
field_names = [ 
       "a", 
       "list", 
       "of", 
       "fieldnames" 
      ] 

convert(csvfile, field_names) 

Y un consejo, csv es bastante legible por lo que sólo tiene que ir a través y asegúrese de que guarda en el formato que desee y luego ejecutar este script para convertirlo a JSON. ¡Compruébalo en un visor JSON como JSONView y entonces deberías estar listo!

+0

El método para convertir automáticamente .ods a .csv falta para que realmente se pueda utilizar como respuesta, esto puede funcionar con poca número de archivos .ods (hasta 100, tal vez 1000) pero con más va a ser bastante irritante y lento. –

Cuestiones relacionadas