将CSV / XLS转换为JSON?[关闭]


142

有谁知道是否有可以让我最好将XLS转换为JSON的应用程序?

我还将为CSV转换程序做准备,因为如果周围什么都没有的话,我可能最终不得不写自己。


XLS的结构如何?您是否假设第一行是列标题?
SheetJS


CsvCruncher将CSV作为SQL表,让我们执行SELECT,将结果导出为CSV或JSON。github.com/OndraZizka/csv-cruncher
Ondra参观Žižka

使用pandas数据框可以轻松完成此操作。将您的csv导入到pandas数据框,然后将其隐藏到json。
R4444 '18 / 12/19

1
我建议您看一下Data Transformer(免责声明-我是它的开发人员)。它将在本地CSV,JSON,XML和YML之间转换。它提供了许多转换设置(具有良好的默认设置),因此您可以根据自己的目的定制结果。您可以从Mac App StoreMicrosoft Store获取它。
Geo Systems

Answers:


77

这对我来说效果很好,不需要上传文件:

https://github.com/cparker15/csv-to-json?files=1


如果要转换为文本,可以将其粘贴到代码中,请使用“ Actionscript”选项。
史蒂夫·奥康纳

不幸的是,该网站关闭了
Mazen Kasser 2013年


@zmonteca用您的链接更新了答案
robertc 2014年

谢谢,它有效。您只需要更新此项目的依赖项,否则它将无法运行
hd84335

195

您可以尝试我制作的这个工具:

数据转换器先生

它将转换为JSON,XML等。

也是所有客户端,因此您的数据永远不会离开您的计算机。


看起来很有趣,当我再次有需要时,请病重于此
mkoryak 2011年

6
很好,但是请注意,它不能正确转义引号。当CSV包含双引号时,输出不会转义。您可能需要手工完成。尽管如此,还是非常方便的工具。
barrycarton

很棒的工具!做得很好。@barrycarton,如果您从Github中获取最新代码,似乎此问题已得到解决。上面链接中的一个似乎已过时。
巴赫2012年

@Shan Carter您好,我希望用户仅加载excel文件,而不要复制excel的内容,是否可以使用当前代码或者我应该将其分叉(如果可以这样做)。请分享您的想法。
拉胡尔·豪塔姆

1
很棒的工具,@ Shan Carter。我冒昧地在这里用叉子修理了一些东西thdoan.github.io/mr-data-converter
thdoan '16

38

由于Powershell 3.0(随Windows 8一起提供,可用于Windows 7和Windows Server 2008,但不适用于Windows Vista),因此可以使用内置的convertto-json命令集:

PS E:> $topicsjson = import-csv .\itinerary-all.csv | ConvertTo-Json 

PS E:\> $topicsjson.Length
11909

PS E:\> $topicsjson.getType()

IsPublic IsSerial Name                                     BaseType                  
-------- -------- ----                                     --------                  
True     True     Object[]                                 System.Array              

Technet上的联机帮助页面


7
额外的功劳:将json保存到文件中... $ topicsjson | 添加内容-路径“ mydata.json”
brady321 '18

28

如果找不到现有解决方案,那么用Java构建基本解决方案非常容易。我只是为客户写了一个,只花了几个小时就包括了研究工具。

Apache POI将读取Excel二进制文件。 http://poi.apache.org/

JSONObject将构建JSON

之后,只需遍历Excel数据中的行并构建JSON结构即可。这是一些基本用法的伪代码。

FileInputStream inp = new FileInputStream( file );
Workbook workbook = WorkbookFactory.create( inp );

// Get the first Sheet.
Sheet sheet = workbook.getSheetAt( 0 );

    // Start constructing JSON.
    JSONObject json = new JSONObject();

    // Iterate through the rows.
    JSONArray rows = new JSONArray();
    for ( Iterator<Row> rowsIT = sheet.rowIterator(); rowsIT.hasNext(); )
    {
        Row row = rowsIT.next();
        JSONObject jRow = new JSONObject();

        // Iterate through the cells.
        JSONArray cells = new JSONArray();
        for ( Iterator<Cell> cellsIT = row.cellIterator(); cellsIT.hasNext(); )
        {
            Cell cell = cellsIT.next();
            cells.put( cell.getStringCellValue() );
        }
        jRow.put( "cell", cells );
        rows.put( jRow );
    }

    // Create the JSON.
    json.put( "rows", rows );

// Get the JSON text.
return json.toString();

如果将excel存储在E:/exceloutput.xlsx。前两行中file和inp的值是什么?
凯特




5

现有的解决方案都无法正常工作,因此我很快就一起编写了一个脚本来完成这项工作。还将空字符串转换为null,并分隔JSON的标题行。可能需要根据您的CSV方言和字符集进行调整。

#!/usr/bin/python
import csv, json
csvreader = csv.reader(open('data.csv', 'rb'), delimiter='\t', quotechar='"')
data = []
for row in csvreader:
    r = []
    for field in row:
        if field == '': field = None
        else: field = unicode(field, 'ISO-8859-1')
        r.append(field)
    data.append(r)
jsonStruct = {
    'header': data[0],
    'data': data[1:]
}
open('data.json', 'wb').write(json.dumps(jsonStruct))


否,除了使用相同的库(csv,json)。我从头开始编写代码。我想执行的处理需要循环(字符集转换和将空字符串替换为null)。
Tronic

我想知道许多评论“这对我有用”与这条评论“现有解决方案均无效”之间的冲突。
B. Clay Shannon

4

代替硬编码转换器,对Jackson(JSON处理器)的CSV支持如何:https : //github.com/FasterXML/jackson-dataformat-csv。因此,核心Jackson可以将POJSON,Maps JsonNode等几乎任何内容读入JSON 。CSV支持也可以使用CSV来实现。结合两者,它是非常强大但简单的多种格式之间的转换器(已经有XML,YAML的后端,并且还添加了更多后端)。

可以在此处找到显示如何执行此操作的文章。


3

看看是否有帮助:返回CSV-将CSV文本转换为对象;通过JSON

这是2008年11月发布的博客,其中包含提供解决方案的C#代码。

从博客文章的介绍中:

由于Json比Xml更容易读写。因此,与Json相比,CSV(逗号分隔值)更易于读写。CSV还具有Excel等工具,可以轻松使用和创建。因此,如果您想为下一个应用程序创建配置文件或数据文件,请使用以下代码将CSV格式的JSON转换为POCO对象


1
谢谢。病必须将其移植到Java,但更好的方法是尝试重新发明轮子
mkoryak

很高兴它能正常工作,无论如何,c#-> java还是很不错的选择。
qxotk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.