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.


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


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.


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


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();

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




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))

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 .


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.