【问题标题】:converting CSV/XLS to JSON? [closed]将 CSV/XLS 转换为 JSON? [关闭]
【发布时间】:2010-10-14 08:29:49
【问题描述】:

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

我也会满足于 CSV 的转换器,因为如果周围没有任何东西,我可能最终不得不自己编写。

【问题讨论】:

  • XLS 的结构如何?你认为第一行是列标题吗?
  • CsvCruncher 将 CSV 作为 SQL 表,让您执行 SELECT,将结果导出为 CSV 或 JSON。 github.com/OndraZizka/csv-cruncher
  • 这可以使用 pandas 数据框轻松完成。将您的 csv 导入 pandas 数据框并将其转换为 json。
  • 我建议你看看Data Transformer(免责声明 - 我是它的开发者)。它在本地在 CSV、JSON、XML 和 YML 之间进行转换。它提供了许多转换设置(具有良好的默认值),因此您可以根据自己的目的定制结果。您可以从Mac App StoreMicrosoft Store 获取。

标签: json csv xls


【解决方案1】:

看看这是否有帮助:Back to CSV - Convert CSV text to Objects; via JSON

这是一篇发表于 2008 年 11 月的博文,其中包含用于提供解决方案的 C# 代码。

来自博客文章的介绍:

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

【讨论】:

  • 谢谢。我不得不将它移植到 java,但最好是尝试重新发明轮子
  • 很高兴它可以工作,c# -> java 无论如何都是一个很好的匹配。
【解决方案2】:

我刚刚发现了这个:

http://tamlyn.org/tools/csv2json/

(注意:您必须通过网址提供您的 csv 文件)

【讨论】:

  • 此服务需要上传按钮。
  • 网络崩溃了
  • 链接失效
【解决方案3】:

如果您找不到现有的解决方案,则可以很容易地用 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 中的值是什么?
【解决方案4】:

这对我来说非常有效,不需要上传文件:

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

【讨论】:

  • 如果你想转换成文本,你可以粘贴到你的代码中,使用“Actionscript”选项。
  • 很遗憾这个网站宕机了
  • @zmonteca 用您的链接更新了答案
  • 谢谢,它有效。你只需要更新这个项目的依赖,否则运行失败
【解决方案5】:

你可以试试我做的这个工具:

Mr. Data Converter

它可以转换为 JSON、XML 等。

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

【讨论】:

  • 看起来很有趣,等我有需要的时候再来看看
  • 这很好,但请注意它不能正确转义引号。当您的 CSV 包含双引号时,输出不会转义它。您可能必须手动完成。非常方便的工具。
  • 很棒的工具!做得很好。 @barrycarton 如果您从 Github 提取最新代码,这似乎已得到修复。上面链接中的那个似乎已经过时了。
  • 嗨@Shan Carter我希望用户只加载excel文件,而不是复制excel的内容,是否可以使用当前代码或者我应该分叉它(如果可以的话) .请分享您的想法。
  • 很棒的工具,@Shan Carter。我冒昧地在我的叉子中使用fix a few thingsthdoan.github.io/mr-data-converter
【解决方案6】:

现有的解决方案都不起作用,所以我迅速编写了一个可以完成这项工作的脚本。还将空字符串转换为空值,并分隔 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 替换空字符串)。
  • 我想知道许多声称“这对我有用”的 cmets 和声称“现有解决方案都不起作用”的 cmets 之间的冲突。
【解决方案7】:

试试这个小巧的免费工具:

http://keyangxiang.com/csvtojson/

它利用 node.js csvtojson module

【讨论】:

  • 它已经不存在了。
  • 链接是最新的。它应该可以工作。
  • 它在GitHub。这是最灵活的工具。我想要一种使用 CSV (example) 创建嵌套数组或对象的方法。
【解决方案8】:

代替硬编码转换器,CSV 支持 Jackson(JSON 处理器)怎么样:https://github.com/FasterXML/jackson-dataformat-csv。所以核心 Jackson 可以将 JSON 读取为 POJO、Maps、JsonNode,几乎任何东西。 CSV 支持也可以对 CSV 做同样的事情。将两者结合起来,它是多种格式之间非常强大但简单的转换器(已经有 XML、YAML 的后端,并且正在添加更多)。

可以在here找到一篇介绍如何执行此操作的文章。

【讨论】:

    【解决方案9】:

    由于 Powershell 3.0(随 Windows 8 提供,available for Windows 7 and 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              
    

    Online Help Page on Technet

    【讨论】:

    • 额外功劳:将 json 保存到文件中... $topicsjson |添加内容-路径“mydata.json”
    • 单行 Powershell 命令:c:\> $jsonData = import-csv .\INPUTFILE.csv | ConvertTo-Json - 深度 100 |输出文件 .\OUTPUTFILE.json
    • 只需运行(import-csv .\in.csv | ConvertTo-Json) &gt; out.json :)
    【解决方案10】:

    这适用于我并在客户端运行: http://www.convertcsv.com/csv-to-json.htm

    【讨论】:

    • 感谢您的建议 :) 转换器运行良好。
    • 这个包含制表符分隔符,因此您可以直接从 Excel 粘贴。
    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多