конвертировать CSV / XLS в JSON? [закрыто]

144

Кто-нибудь знает, есть ли приложение, которое позволит мне конвертировать предпочтительно XLS в JSON?

Я также соглашусь на конвертер из CSV, поскольку мне, вероятно, придется писать самому, если вокруг ничего нет.

Макоряк
источник
Как устроен XLS? Вы предполагаете, что первая строка - это заголовки столбцов?
SheetJS
CSVkit делает это: csvkit.readthedocs.org/en/latest/scripts/csvjson.html
Аманда,
CsvCruncher принимает CSV как таблицу SQL и позволяет вам выполнить SELECT, экспортируя результат в CSV или JSON. github.com/OndraZizka/csv-cruncher
Ondra ižka
Это легко сделать с помощью фрейма данных pandas. Импортируйте ваш csv в фрейм данных pandas и скройте его в json.
R4444
1
Предлагаю вам посмотреть Data Transformer (отказ от ответственности - я его разработчик). Он конвертирует между CSV, JSON, XML и YML локально. Он предлагает ряд настроек преобразования (с хорошими значениями по умолчанию), чтобы вы могли адаптировать результат для своих целей. Вы можете получить его в Mac App Store или Microsoft Store .
Geo Systems

Ответы:

79

Это отлично сработало для меня и НЕ требует загрузки файла:

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

Zmonteca
источник
Если вы хотите преобразовать в текст, который можно вставить в свой код, используйте опцию «ActionScript».
Стив О'Коннор
К сожалению, этот веб-сайт отключился
Mazen Kasser
3
Похоже, что источник находится на GIT: github.com/cparker15/csv-to-json?files=1
zmonteca 01
@zmonteca Обновил ответ вашей ссылкой
robertc
Спасибо, это работает. вам просто нужно обновить зависимости этого проекта, иначе он не запустится
hd84335
197

Вы можете попробовать этот инструмент, который я сделал:

Мистер Конвертер данных

Он конвертируется в JSON, XML и другие.

Это тоже все на стороне клиента, поэтому ваши данные никогда не покидают ваш компьютер.

Шан Картер
источник
выглядит интересно, я вернусь к этому, когда мне снова понадобится
mkoryak
6
Это нормально, но имейте в виду, что кавычки не экранируются правильно. Если ваш CSV-файл содержит двойные кавычки, вывод не выводится. Возможно, вам придется делать это вручную. Тем не менее, очень удобный инструмент.
barrycarton
Отличный инструмент! красиво сделано. @barrycarton кажется, что это было исправлено, если вы загрузите последний код из Github. Тот, что по ссылке выше, кажется устаревшим.
Бах
Привет, @Shan Carter, я хочу, чтобы пользователь просто загрузил файл excel, а не копировал содержимое excel, возможно ли это с текущим кодом, или я должен его форкнуть (если это возможно). Пожалуйста, поделитесь своими мыслями.
Рахул Гаутам
2
Отличный инструмент, @Shan Carter. Я взял на себя смелость исправить несколько вещей в моей вилке здесь: thdoan.github.io/mr-data-converter
thdoan
40

Начиная с 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

knb
источник
8
Дополнительный кредит: сохранить json в файл ... $ themesjson | Add-Content -Path "mydata.json"
brady321
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. Какими будут значения в файлах и inp в первых двух строках?
Кейт,
12

Это работает для меня и работает на стороне клиента: http://www.convertcsv.com/csv-to-json.htm

датамэн
источник
1
Спасибо за предложение :) Конвертер работает нормально.
Nekto
1
Здесь есть разделитель табуляции, так что вы можете вставлять прямо из Excel.
Arlen Beiler
6

Я только что нашел это:

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

(Примечание: ваш CSV-файл должен быть доступен через веб-адрес)

ДанДан
источник
1
Этому сервису нужна кнопка загрузки.
neoneye 06
2
Интернет
Fai Zal Dong
Ссылка не работает
Адитья
6

Попробуйте крошечный бесплатный инструмент:

http://keyangxiang.com/csvtojson/

Он использует модуль csvtojson node.js

Keyang
источник
Он больше не в прямом эфире.
GM2008
Ссылка актуальна. Он должен работать.
Keyang
Это на GitHub . Это самый гибкий инструмент. Мне нужен был способ создания вложенных массивов или объектов с использованием CSV ( пример ).
Майкл МакГиннис
5

Ни одно из существующих решений не помогло, поэтому я быстро собрал сценарий, который справился бы с этой задачей. Также преобразует пустые строки в нули и отделяет строку заголовка для 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))
Tronic
источник
Это связано с johntron.com/creations/csv-to-json
Дэвид
Нет, за исключением того, что используются те же библиотеки (csv, json). Я написал свой код с нуля. Циклы необходимы для обработки, которую я хотел выполнить (преобразование кодировки и замена пустых строк на null).
Tronic
1
Меня интересует конфликт между многими комментариями, в которых говорится, что «это сработало для меня», и этим, утверждающим, что «ни одно из существующих решений не сработало».
B. Clay Shannon
4

Вместо жестко запрограммированных конвертеров, как насчет поддержки CSV для Jackson (процессор JSON): https://github.com/FasterXML/jackson-dataformat-csv . Таким образом, ядро ​​Джексона может читать JSON как POJO, Карты,JsonNode , почти что угодно. И поддержка CSV может делать то же самое с CSV. Объедините их, и это будет очень мощный, но простой преобразователь между несколькими форматами (уже добавлены бэкенды для XML, YAML и многое другое).

Статью, в которой показано, как это сделать, можно найти здесь .

StaxMan
источник
4

Посмотрите, поможет ли это: Вернуться в CSV - преобразовать текст CSV в объекты; через JSON

Это сообщение в блоге, опубликованное в ноябре 2008 г., которое включает код C # для предоставления решения.

Из вступления к сообщению в блоге:

Поскольку Json легче читать и писать, то Xml. Отсюда следует, что CSV (значения, разделенные запятыми) легче читать и писать, чем Json. В CSV также есть такие инструменты, как Excel и другие, которые упрощают работу и создание. Итак, если вы когда-нибудь захотите создать файл конфигурации или данных для своего следующего приложения, вот код для преобразования CSV в JSON в объекты POCO.

qxotk
источник
1
Спасибо. Мне придется портировать это на java, но лучше, чем пытаться изобретать велосипед
mkoryak
рад, что это работает, c # -> java в любом случае неплохое совпадение.
qxotk