перетворення CSV / XLS в JSON? [зачинено]


142

Хто-небудь знає, чи є програма, яка дозволить мені перетворити XLS переважно в JSON?

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


Як структурується XLS? Ви припускаєте, що перший рядок - це заголовки стовпців?
SheetJS


CsvCruncher приймає CSV як таблицю SQL, і давайте зробимо SELECT, експортуючи результат у вигляді CSV або JSON. github.com/OndraZizka/csv-cruncher
Ондра Жижка

Це можна легко зробити за допомогою фрейму даних панд. Імпортуйте свій csv в рамку даних панди та перекладіть його в json.
R4444

1
Я б запропонував вам переглянути Трансформатор даних (відмова - я його розробник). Він перетворює між CSV, JSON, XML та YML локально. Він пропонує ряд параметрів конверсії (з хорошими типовими налаштуваннями), щоб ви могли налаштувати результат під свої цілі. Ви можете отримати його в магазині додатків Mac або в магазині Microsoft .
Geo Systems

Відповіді:


77

Це прекрасно працювало для мене і НЕ вимагає завантаження файлу:

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


Якщо ви хочете перетворити текст, який ви можете вставити у свій код, скористайтеся опцією "Actionscript".
Стів О'Коннор

На жаль, цей веб-сайт зайшов
Mazen Kasser

3
Схоже, джерело в GIT: github.com/cparker15/csv-to-json?files=1
zmonteca

@zmonteca Оновив відповідь за допомогою свого посилання
robertc

Дякую, це працює. вам просто потрібно оновити залежності цього проекту, інакше він не запуститься
hd84335

196

Ви можете спробувати цей інструмент, який я зробив:

Містер конвертер даних

Він перетворюється на JSON, XML та інші.

Це теж клієнтська сторона, тому ваші дані ніколи не залишають ваш комп'ютер.


виглядає цікаво, погано повертаюся до цього, коли мені знову знадобиться
mkoryak

6
Це добре, але пам’ятайте, що він не уникає цитат правильно. Коли ваш CSV містить подвійні лапки, вихід не уникає цього. Можливо, вам доведеться це зробити вручну. Тим не менш, дуже зручний інструмент.
barrycarton

Чудовий інструмент! прекрасно зроблено. @barrycarton, здається, це було виправлено, якщо ви витягнете останній код від Github. Той, що знаходиться за посиланням вище, здається застарілим.
Бах

Привіт @Shan Carter Я хочу, щоб користувач просто завантажував файл excel, а не копіював вміст excel, чи це можливо за допомогою поточного коду чи я повинен роздрібнити його (якщо це можливо зробити). Будь ласка, поділіться своїми думками.
Рахул Гаутам

1
Дивовижний інструмент, @Shan Carter. Я взяв на себе сміливість виправити декілька речей у своєму вилці: thdoan.github.io/mr-data-converter
thdoan

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 у файл ... $ themesjson | Add-Content -Path "mydata.json"
brady321

28

Якщо ви не можете знайти існуюче рішення, побудувати базове в Java досить просто. Я тільки що написав для клієнта, і це займало лише пару годин, включаючи інструменти для дослідження.

POI Apache прочитає двійковий файл 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/

Він використовує node.js csvtojson модуль


Це вже не живе.
gm2008

Посилання актуально. Це має працювати.
Кіанг

Це на 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))

Це пов’язано з johntron.com/creations/csv-to-json
Девід

Ні, за винятком того, що використовуються ті самі бібліотеки (csv, json). Я написав свій код з нуля. Цикли потрібні для обробки, яку я хотів зробити (перетворення діаграм і заміна порожніх рядків на null).
Tronic

Мене цікавить конфлікт між багатьма коментарями, які говорять «це працювало для мене», і цим, що стверджує, що «жодне з існуючих рішень не працювало».
Б. Клей Шеннон

4

Замість жорстко кодованих перетворювачів, як щодо підтримки CSV для Джексона (процесор JSON): https://github.com/FasterXML/jackson-dataformat-csv . Таким чином, Джексон може читати JSON як POJO, Maps JsonNode, майже все. І підтримка CSV може зробити те ж саме з CSV. Поєднайте два, і це дуже потужний, але простий перетворювач між декількома форматами (вже є допоміжні файли для XML, YAML та багато іншого).

Статтю, яка показує, як це зробити, можна знайти тут .


3

Перевірте, чи це допомагає: Назад до CSV - Перетворення CSV-тексту в об’єкти; через JSON

Це повідомлення в блозі, опублікована в листопаді 2008 року, яка включає код C # для надання рішення.

Із вступу до повідомлення в блозі:

Оскільки Json легше читати і писати, то Xml. Звідси випливає, що CSV (значення, відокремлені комами) легше читати і записувати тоді Json. CSV також має такі інструменти, як Excel та інші, які полегшують роботу та створення. Отож, якщо ви хочете коли-небудь створити файл конфігурації чи даних для наступного додатка, ось код для перетворення CSV з JSON в об'єкти POCO


1
Дякую. я мушу
переправити

радий, що це працює, c # -> java все-таки досить гарна відповідність.
qxotk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.