2012-02-19 15 views
8

Chciałbym przekonwertować mój arkusz danych na tablicę JSON.Plik ODS do JSON

Strona zrób to: http://www.shancarter.com/data_converter/index.html Sprawdziłem kod źródłowy.

Ale co chciałbym to makro/script/rozbudowa lub dowolny sposób zaprogramować go przekonwertować moje .ods do pliku JSON:

odczuwalna:

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 

Do:

[ 
    ["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

Pytasz o to? http://stackoverflow.com/questions/4745024/spreadsheet-to-python-dictionary-conversion –

+0

Zobacz http://pypi.python.org/pypi/odfpy/0.9.4 lub http: //pypi.python. org/pypi/ezodf/0.2.1 –

+0

Moje rozwiązanie: ODS do CSV i CSV do JSON-a z małym skryptem python – damio

Odpowiedz

5

Odpowiedź może być znowu za późno, ale marcoconti83 zrobił dokładnie to: odczytanie pliku ods i zwrócenie ich jako tablic dwuwymiarowych.

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

Gdy masz dane w tablicach, to nie jest takie trudne, aby je do pliku json. Oto przykład kodu:

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

Może to być trochę za późno, ale dla tych, którzy szukają i chcą to zrobić, najlepiej będzie zapisać plik .ods jako .csv, który może wykonać prawie każdy program arkusza kalkulacyjnego. Następnie użyć czegoś tak aby przekształcić go:

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) 

i końcówkę, csv jest dość czytelny dla człowieka, tak po prostu przejść i upewnić się, że zapisane w żądanym formacie, a następnie uruchomić ten skrypt, aby przekształcić go do JSON. Sprawdź to w przeglądarce JSON, takiej jak JSONView, a następnie powinieneś być gotowy!

+0

Metoda automatycznego przekonwertowania .ods na .csv jest niedostępna, aby była naprawdę użyteczna jako odpowiedź - może działać z małą liczba plików .ods (do 100, może 1000), ale z większą ilością będzie to dość irytujące i czasochłonne. –