将CSV/XLS转换为JSON?

149

有没有应用程序可以让我把XLS转成JSON?如果没有,我可能只能写一个转换CSV的转换器了。


XLS结构是怎样的?你是否认为第一行是列标题? - SheetJS
CSVkit可以实现这个功能:http://csvkit.readthedocs.org/en/latest/scripts/csvjson.html - Amanda
CsvCruncher将CSV作为SQL表格处理,让您可以执行SELECT操作,并将结果导出为CSV或JSON格式。https://github.com/OndraZizka/csv-cruncher - Ondra Žižka
这可以很容易地使用pandas dataframe完成。将您的csv导入pandas dataframe并将其转换为json即可。 - R4444
https://www.npmjs.com/package/convert-csv-to-json - Gene Bo
1
我建议您查看 数据转换器(免责声明-我是它的开发者)。它可以在本地之间转换CSV、JSON、XML和YML格式。它提供了许多转换设置(具有良好的默认值),因此您可以为自己的目的量身定制结果。您可以从Mac App StoreMicrosoft Store中获取它。 - Geo Systems
10个回答

199

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

Mr. Data Converter

它可以将数据转换为JSON、XML和其他格式。

而且,所有的操作都在客户端完成,您的数据永远不会离开您的电脑。


6
它还不错,但请注意它无法正确转义引号。如果你的CSV文件包含双引号,输出将无法进行转义。你可能需要手动处理。尽管如此,这是一个非常方便的工具。 - barrycarton
嗨@Shan Carter,我希望用户只需加载Excel文件,而不是复制Excel的内容。当前的代码是否支持此功能,或者我需要分叉它(如果可以实现的话)?请分享您的想法。 - Rahul Gautam
转换为YAML格式?例如:https://github.com/nodeca/js-yaml :D - sam
2
很棒的工具,@Shan Carter。我在这里自己的分支中进行了一些修复:http://thdoan.github.io/mr-data-converter/ - thdoan

82

如果您想将代码转换为文本,可以使用“Actionscript”选项进行粘贴。 - Stephen O'Connor
很遗憾,这个网站已经宕机了。 - Mazen Kasser
3
看起来源代码在GIT上:https://github.com/cparker15/csv-to-json?files=1 - zmonteca
@zmonteca已经更新了答案,并添加了你的链接。 - robertc
谢谢,它可以工作。你只需要更新这个项目的依赖项,否则它无法运行。 - hd84335

47

自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在线帮助页面


10
额外加分:将JSON保存到文件中...$topicsjson | Add-Content -Path "mydata.json" - brady321
单行PowerShell命令:c:> $jsonData = import-csv .\INPUTFILE.csv | ConvertTo-Json -depth 100 | Out-File .\OUTPUTFILE.json - SridharKritha
只需运行 (import-csv .\in.csv | ConvertTo-Json) > out.json :) - Qamar

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 中。那么第一行和第二行的文件和输入值会是什么? - Kate

13

2
谢谢您的建议 :) 转换器工作得很好。 - Nekto
3
这个包括了制表符分隔符,所以你可以直接从Excel中粘贴。 - Arlen Beiler

6

1
此服务需要一个上传按钮。 - neoneye
2
网站崩溃了。 - Fai Zal Dong
链接无法使用。 - Aditya

6

它不再是实时的。 - gm2008
链接是最新的。它应该可以工作。 - Keyang
它在 GitHub 上。这是最灵活的工具。我想要一种使用 CSV 创建嵌套数组或对象的方法(示例)。 - Michael McGinnis

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))

这与http://johntron.com/creations/csv-to-json/有关吗? - David
不,除了使用相同的库(csv、json)外,我是从头开始编写代码的。循环是为了实现我想要的处理(字符集转换和将空字符串替换为null)。 - Tronic
1
我对许多评论之间的冲突感到困惑,其中一些评论说“这对我有用”,而另一个评论声称“没有任何现有的解决方案可行”。 - B. Clay Shannon-B. Crow Raven

4
而不是硬编码转换器,何不使用Jackson(JSON处理器)的CSV支持:https://github.com/FasterXML/jackson-dataformat-csv。 因此,核心Jackson可以将JSON读取为POJO,Map,JsonNode,几乎任何内容。 CSV支持也可以对CSV执行相同的操作。 结合使用时,这是多种格式之间非常强大但简单的转换器(已经有XML,YAML的后端,并正在添加更多)。可在这里找到说明如何使用的文章。

4
看看这篇文章是否有帮助:回到CSV - 将CSV文本转换为对象;通过JSON 这是一篇于2008年11月发布的博客文章,其中包含C#代码提供的解决方案。
从博客文章的介绍中可以看出:
由于Json比Xml更容易阅读和编写。因此,CSV(逗号分隔值)比Json更易于阅读和编写。 CSV还具有工具,例如Excel和其他工具,使其易于使用和创建。因此,如果您想为下一个应用程序创建配置或数据文件,这里有一些将CSV转换为JSON到POCO对象的代码。

1
谢谢。我必须将这个移植到Java,但这比试图重新发明轮子要好。 - mkoryak
很高兴它能工作,C#转Java是一个相当好的匹配。 - qxotk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接