konwertować CSV / XLS na JSON? [Zamknięte]

142

Czy ktoś wie, czy istnieje aplikacja, która pozwoli mi przekonwertować najlepiej XLS na JSON?

Zadowolę się również konwerterem z CSV, ponieważ prawdopodobnie będę musiał sam napisać, jeśli nic nie ma w pobliżu.

mkoryak
źródło
Jaka jest struktura XLS? Czy zakładasz, że pierwszy wiersz to nagłówki kolumn?
SheetJS
CsvCruncher przyjmuje CSV jako tabelę SQL i pozwala wykonać SELECT, eksportując wynik jako CSV lub JSON. github.com/OndraZizka/csv-cruncher
Ondra Žižka
Można to łatwo zrobić za pomocą pandy dataframe. Zaimportuj plik csv do pandy dataframe i zamień go w json.
R4444
1
Proponuję spojrzeć na Data Transformer (zastrzeżenie - jestem jego twórcą). Konwertuje lokalnie między CSV, JSON, XML i YML. Oferuje szereg ustawień konwersji (z dobrymi ustawieniami domyślnymi), dzięki czemu możesz dostosować wynik do swoich celów. Możesz go pobrać z Mac App Store lub Microsoft Store .
Geo Systems

Odpowiedzi:

77

To zadziałało idealnie dla mnie i NIE wymaga przesyłania pliku:

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

zmonteca
źródło
Jeśli chcesz przekonwertować na tekst, który możesz wkleić w swoim kodzie, użyj opcji „Actionscript”.
Steve O'Connor
Niestety ta strona upadła
Mazen Kasser
3
Wygląda na to, że źródło jest na GIT: github.com/cparker15/csv-to-json?files=1
zmonteca
@zmonteca Zaktualizowałem odpowiedź swoim linkiem
robertc
Dziękuję, działa. wystarczy zaktualizować zależności tego projektu, w przeciwnym razie nie
zadziała
195

Możesz wypróbować to narzędzie, które stworzyłem:

Mr. Data Converter

Konwertuje do formatu JSON, XML i innych.

Wszystko to działa również po stronie klienta, więc Twoje dane nigdy nie opuszczają komputera.

Shan Carter
źródło
wygląda ciekawie, źle do tego wrócę, gdy będę potrzebował ponownie
mkoryak
6
Jest w porządku, ale pamiętaj, że nie usuwa poprawnie cytatów. Kiedy Twój plik CSV zawiera cudzysłowy, dane wyjściowe nie są uwzględniane. Być może będziesz musiał to zrobić ręcznie. Mimo to bardzo przydatne narzędzie.
barrycarton
Świetne narzędzie! ładnie wykonane. @barrycarton, wygląda na to, że problem został rozwiązany, jeśli pobierzesz najnowszy kod z Github. Ten pod powyższym linkiem wydaje się nieaktualny.
Bach
Cześć @Shan Carter Chcę, aby użytkownik po prostu załadował plik Excela, Nie kopiował zawartości programu Excel, Czy jest to możliwe z obecnym kodem, czy powinienem go rozwidlić (jeśli jest to możliwe). Podziel się swoimi przemyśleniami.
Rahul Gautam
1
Niesamowite narzędzie, @Shan Carter. Pozwoliłem sobie naprawić kilka rzeczy w moim widelcu tutaj: thdoan.github.io/mr-data-converter
thdoan
38

Od wersji Powershell 3.0 (dostarczanej z Windows 8, dostępnej dla Windows 7 i Windows Server 2008, ale nie dla Windows Vista) można użyć wbudowanego polecenia 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              

Strona pomocy online w witrynie Technet

knb
źródło
7
Dodatkowy kredyt: zapisz json do pliku ... $ topicsjson | Add-Content -Path "mydata.json"
brady321
28

Jeśli nie możesz znaleźć istniejącego rozwiązania, dość łatwo jest zbudować podstawowe rozwiązanie w Javie. Właśnie napisałem jeden dla klienta i zajęło mi to tylko kilka godzin, łącznie z badaniem narzędzi.

Apache POI odczyta plik binarny Excel. http://poi.apache.org/

JSONObject utworzy JSON

Następnie wystarczy przejść przez wiersze w danych programu Excel i zbudować strukturę JSON. Oto pseudo kod do podstawowego zastosowania.

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();
Matt York
źródło
Jeśli mam program Excel przechowywany w E: /exceloutput.xlsx. Jakie byłyby wartości w pliku i inp w pierwszych dwóch wierszach?
Kate
11

To działa dla mnie i działa po stronie klienta: http://www.convertcsv.com/csv-to-json.htm

dataman
źródło
1
Dziękuję za sugestię :) Konwerter działa dobrze.
Nekto
1
Ten zawiera separator tabulatorów, dzięki czemu można wkleić bezpośrednio z programu Excel.
Arlen Beiler
6

Właśnie znalazłem to:

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

(Uwaga: musisz udostępnić swój plik csv za pośrednictwem adresu internetowego)

DanDan
źródło
1
Ta usługa wymaga przycisku przesyłania.
neoneye
2
sieć poszła w dół
Fai Zal Dong
Link nie działa
Aditya
6

Wypróbuj małe darmowe narzędzie:

http://keyangxiang.com/csvtojson/

Wykorzystuje moduł node.js csvtojson

Keyang
źródło
To już nie jest na żywo.
gm2008
Link jest aktualny. Powinno działać.
Keyang
Jest na GitHubie . To najbardziej elastyczne narzędzie. Chciałem mieć sposób na tworzenie zagnieżdżonych tablic lub obiektów przy użyciu CSV ( przykład ).
Michael McGinnis,
5

Żadne z istniejących rozwiązań nie działało, więc szybko zhakowałem skrypt, który wykonał zadanie. Konwertuje również puste ciągi na wartości null i oddziela wiersz nagłówka dla formatu JSON. Może wymagać dostrojenia w zależności od używanego dialektu i zestawu znaków 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
źródło
Czy to jest związane z johntron.com/creations/csv-to-json
David
Nie, z wyjątkiem tego, że używane są te same biblioteki (csv, json). Napisałem swój kod od zera. Pętle są wymagane do przetwarzania, które chciałem zrobić (konwersja zestawu znaków i zastępowanie pustych ciągów przez null).
Tronic
Zastanawiam się nad konfliktem między wieloma komentarzami, które mówią „to zadziałało dla mnie”, a tym, który twierdzi, że „żadne z istniejących rozwiązań nie zadziałało”.
B. Clay Shannon
4

Zamiast kodowanych na stałe konwerterów, co powiesz na obsługę CSV dla Jacksona (procesor JSON): https://github.com/FasterXML/jackson-dataformat-csv . Więc core Jackson może czytać JSON jako POJO, Mapy,JsonNode , prawie wszystko. Obsługa CSV może zrobić to samo z CSV. Połącz oba, a jest to bardzo potężny, ale prosty konwerter między wieloma formatami (istnieją już backendy dla XML, YAML i więcej).

Artykuł, który pokazuje, jak to zrobić, można znaleźć tutaj .

StaxMan
źródło
3

Sprawdź, czy to pomoże: Wróć do CSV - Konwertuj tekst CSV na obiekty; przez JSON

To jest wpis na blogu opublikowany w listopadzie 2008 roku, który zawiera kod C # w celu dostarczenia rozwiązania.

Od wprowadzenia w poście na blogu:

Ponieważ Json jest łatwiejszy do czytania i pisania, a następnie Xml. Wynika z tego, że CSV (wartości oddzielone przecinkami) jest łatwiejszy do odczytania i zapisu niż Json. CSV zawiera również narzędzia, takie jak Excel i inne, które ułatwiają pracę i tworzenie. Jeśli więc kiedykolwiek zechcesz utworzyć plik konfiguracyjny lub plik danych dla swojej następnej aplikacji, oto kod do konwersji CSV na JSON do obiektów POCO

qxotk
źródło
1
dzięki. chory muszę przenieść to na java, ale lepiej niż próba ponownego wynalezienia koła
mkoryak
cieszę się, że działa, c # -> java i tak jest całkiem niezłe.
qxotk