ODS文件到JSON

dam*_*mio 8 python json calc libreoffice

我想将我的数据表格转换为数组的JSON数组.

这个网站是这样做的:http://www.shancarter.com/data_converter/index.html 我查看了源代码.

但我想要的是一个宏/脚本/扩展或任何方式来编程它将我的.ods转换为JSON文件:

喜欢:

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
Run Code Online (Sandbox Code Playgroud)

至:

[
    ["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"]
]
Run Code Online (Sandbox Code Playgroud)

cli*_*ray 5

这可能有点晚了,但对于那些来寻找并想要这样做的人来说,最好将 .ods 文件保存为 .csv,几乎所有电子表格程序都可以这样做。然后使用这样的东西来转换它:

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)
Run Code Online (Sandbox Code Playgroud)

还有一个提示,csv 是人类可读的,所以只需检查并确保它以您想要的格式保存,然后运行此脚本将其转换为 JSON。在JSONView 之类的 JSON 查看器中查看它,然后您就可以开始使用了!


chf*_*hfw 5

答案可能会迟到,但marcoconti83完全做到了:读取ods文件并将它们作为二维数组返回.

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

一旦将数据存储在数组中,将它们放入json文件并不困难.这是示例代码:

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)
Run Code Online (Sandbox Code Playgroud)