converter CSV / XLS para JSON? [fechadas]

142

Alguém sabe se existe algum aplicativo que me permita converter preferencialmente XLS para JSON?

Também vou me contentar com um conversor de CSV, já que é isso que provavelmente vou acabar tendo que me escrever se não houver nada por perto.

mkoryak
fonte
Como o XLS está estruturado? Você supõe que a primeira linha seja o cabeçalho da coluna?
SheetJS
O CsvCruncher usa o CSV como uma tabela SQL e vamos fazer um SELECT, exportando o resultado como CSV ou JSON. github.com/OndraZizka/csv-cruncher
Ondra Žižka
Isso pode ser feito facilmente usando o dataframe do pandas. Importe seu csv para o dataframe do pandas e oculte-o para o json.
R4444
1
Eu sugiro que você olhe para o Data Transformer (aviso de isenção de responsabilidade - sou desenvolvedor). Ele converte entre CSV, JSON, XML e YML localmente. Ele oferece várias configurações de conversão (com bons padrões) para que você possa personalizar o resultado para seus propósitos. Você pode obtê-lo na Mac App Store ou na Microsoft Store .
Geo Systems

Respostas:

77

Isso funcionou perfeitamente para mim e NÃO requer um upload de arquivo:

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

zmonteca
fonte
Se você deseja converter em texto, pode colar no seu código, use a opção "Actionscript".
Steve O'Connor
Infelizmente este site foi desativado
Mazen Kasser 27/11
3
Parece que a fonte está no GIT: github.com/cparker15/csv-to-json?files=1
zmonteca
@zmonteca Atualizou a resposta com o seu link
robertc 27/01
Obrigado, funciona. você só precisa atualizar dependências este dos projetos, caso contrário, ele não consegue executar
hd84335
195

Você pode tentar esta ferramenta que eu criei:

Mr. Data Converter

Ele converte em JSON, XML e outros.

Também é do lado do cliente, para que seus dados nunca saiam do computador.

Shan Carter
fonte
parece interessante, doente voltar a este quando eu tenho necessidade de novo
mkoryak
6
Tudo bem, mas lembre-se de que não escapa aspas corretamente. Quando o seu CSV contém aspas duplas, a saída não escapa. Você pode ter que fazer isso manualmente. Ferramenta muito útil, no entanto.
Barrycarton
Ótima ferramenta! bem feito. @barrycarton parece que isso foi corrigido se você extrair o código mais recente do Github. O link acima parece desatualizado.
Bach
Oi @ Shan Carter Eu quero que o usuário apenas carregue o arquivo excel, não copie o conteúdo do excel, é possível com o código atual ou devo bifurcá-lo (se for possível). Por favor, compartilhe seus pensamentos.
Rahul Gautam
1
Ferramenta incrível, Shan Shan. Tomei a liberdade de corrigir algumas coisas no meu garfo aqui: thdoan.github.io/mr-data-converter
thdoan
38

Desde o Powershell 3.0 (fornecido com o Windows 8, disponível para Windows 7 e Windows Server 2008, mas não o Windows Vista), você pode usar o comando convertto-json interno:

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              

Página de Ajuda Online no Technet

knb
fonte
7
Crédito extra: salve o json em um arquivo ... $ topicsjson | Add-Content -Path "mydata.json"
brady321
28

Se você não consegue encontrar uma solução existente, é muito fácil criar uma solução básica em Java. Acabei de escrever um para um cliente e levou apenas algumas horas, incluindo ferramentas de pesquisa.

O Apache POI lerá o binário do Excel. http://poi.apache.org/

JSONObject criará o JSON

Depois disso, é apenas uma questão de iterar pelas linhas nos dados do Excel e construir uma estrutura JSON. Aqui estão alguns pseudocódigo para o uso básico.

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
fonte
Se estou tendo o excel armazenado em E: /exceloutput.xlsx. Quais seriam os valores no arquivo e no inp nas duas primeiras linhas?
Kate
11

Isso funciona para mim e é executado no lado do cliente: http://www.convertcsv.com/csv-to-json.htm

dataman
fonte
1
Obrigado pela sugestão :) O conversor funciona bem.
Nekto
1
Este inclui o delimitador de tabulação, para que você possa colar diretamente do Excel.
Arlen Beiler
6

Acabei de encontrar isso:

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

(Nota: você precisa disponibilizar seu arquivo csv através de um endereço da web)

DanDan
fonte
1
Este serviço precisa de um botão de upload.
neoneye
2
a web caiu
Fai Zal Dong
O link não está funcionando
Aditya
6

Experimente a pequena ferramenta gratuita:

http://keyangxiang.com/csvtojson/

Utiliza o módulo node.js csvtojson

Keyang
fonte
Não é mais viver.
precisa
O link está atualizado. Deveria funcionar.
Keyang
Está no GitHub . Esta é a ferramenta mais flexível. Eu queria uma maneira de criar matrizes ou objetos aninhados usando CSV ( exemplo ).
Michael McGinnis
5

Nenhuma das soluções existentes funcionou, então rapidamente cortei um script que faria o trabalho. Também converte cadeias vazias em nulos ee separa a linha do cabeçalho para JSON. Pode precisar ser ajustado dependendo do dialeto CSV e do conjunto de caracteres que você possui.

#!/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
fonte
É este relacionado com johntron.com/creations/csv-to-json
David
Não, exceto que as mesmas bibliotecas (csv, json) estão sendo usadas. Eu escrevi meu código do zero. Os loops são necessários para o processamento que eu queria fazer (conversão de conjunto de caracteres e substituição de cadeias vazias por nulas).
Tronic
Estou pensando no conflito entre muitos dos comentários que dizem "isso funcionou para mim" e este afirmando que "nenhuma das soluções existentes funcionou".
B. Clay Shannon
4

Em vez de conversores codificados, que tal o suporte CSV para Jackson (processador JSON): https://github.com/FasterXML/jackson-dataformat-csv . Então, o núcleo Jackson pode ler JSON como POJOs, Maps JsonNode, quase tudo. E o suporte ao CSV pode fazer o mesmo com o CSV. Combine os dois e é um conversor muito poderoso, mas simples, entre vários formatos (já existem backends para XML, YAML e muito mais).

Um artigo que mostra como fazer isso pode ser encontrado aqui .

StaxMan
fonte
3

Veja se isso ajuda: Voltar para CSV - Converta texto CSV em objetos; via JSON

Esta é uma postagem de blog publicada em novembro de 2008 que inclui código C # para fornecer uma solução.

Desde a introdução na postagem do blog:

Como Json é mais fácil de ler e escrever do que Xml. Daqui resulta que o CSV (valores separados por vírgula) é mais fácil de ler e gravar do que o Json. O CSV também possui ferramentas como o Excel e outras que facilitam o trabalho e a criação. Portanto, se você quiser criar um arquivo de configuração ou de dados para o seu próximo aplicativo, aqui está um código para converter objetos CSV para JSON em POCO

qxotk
fonte
1
obrigado. doente tem que esta porta para java, mas melhor, em seguida, tentar reinventar a roda
mkoryak
feliz que funcione, c # -> java é uma boa combinação de qualquer maneira.
qxotk