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


144

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

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


Как устроен XLS? Вы предполагаете, что первая строка - это заголовки столбцов?
SheetJS


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


Если вы хотите преобразовать в текст, который можно вставить в свой код, используйте опцию «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


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 в первых двух строках?
Кейт,



6

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

http://keyangxiang.com/csvtojson/

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


Он больше не в прямом эфире.
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))


Нет, за исключением того, что используются те же библиотеки (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 и многое другое).

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


4

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

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

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

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


1
Спасибо. Мне придется портировать это на java, но лучше, чем пытаться изобретать велосипед
mkoryak

рад, что это работает, c # -> java в любом случае неплохое совпадение.
qxotk
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.