Alguém tem uma idéia de onde eu poderia encontrar algum código javascript para analisar dados CSV?
javascript
csv
Pierre-Gilles Levallois
fonte
fonte
Respostas:
Você pode usar a função CSVToArray () mencionada nesta entrada do blog.
fonte
undefined
para campos vazios que são citados . Exemplo:CSVToArray("4,,6")
me dá[["4","","6"]]
, masCSVToArray("4,\"\",6")
me dá[["4",undefined,"6"]]
."([^\"\\"
deveria ser"([^\\"
. Caso contrário, uma citação dupla em qualquer lugar com um valor não citado terminará prematuramente. Encontrado isso da maneira mais difícil ...jQuery-CSV
É um plugin jquery projetado para funcionar como uma solução completa para analisar CSV em dados Javascript. Ele lida com todos os casos de borda apresentados no RFC 4180 , bem como com alguns que surgem para exportações do Excel / Google Spreadsheed (ou seja, principalmente envolvendo valores nulos) que estão faltando nas especificações.
Exemplo:
Atualizar:
Ah, sim, eu também deveria mencionar que é completamente configurável.
Atualização 2:
Agora ele também funciona com o jQuery no Node.js. Portanto, você tem a opção de analisar do lado do cliente ou do servidor com a mesma lib.
Atualização 3:
Desde o desligamento do Google Code, o jquery-csv foi migrado para o GitHub .
Isenção de responsabilidade: Eu também sou o autor do jQuery-CSV.
fonte
csv
no código da solução, consulte o.csv filename
? Estou interessado em uma boa ferramenta JS / JQuery para analisar um arquivo CSVEu tenho uma implementação como parte de um projeto de planilha.
Esse código ainda não foi testado completamente, mas qualquer pessoa pode usá-lo.
Como algumas das respostas observadas, porém, sua implementação pode ser muito mais simples se você realmente tiver um arquivo DSV ou TSV , pois eles não permitem o uso dos separadores de registro e campo nos valores. O CSV, por outro lado, pode realmente ter vírgulas e novas linhas dentro de um campo, o que quebra a maioria das abordagens regex e baseadas em divisão.
fonte
undefined
célula. Por exemplo,console.log(CSV.parse("first,last,age\r\njohn,doe,"));
console.log(CSV.parse("0,,2,3"));
if ('\r' === chars[c]) { ... }
:if (end === c-1) { row.push(reviver(table.length-1, row.length, '')); }
Aqui está um analisador CSV extremamente simples que lida com campos entre vírgulas, novas linhas e aspas duplas com escape. Não há divisão ou RegEx. Ele verifica a cadeia de entrada com 1-2 caracteres por vez e cria uma matriz.
Teste-o em http://jsfiddle.net/vHKYH/ .
fonte
if (cc == '\r' && nc == '\n' && !quote) { ++row; col = 0; ++c; continue; } if (cc == '\n' && !quote) { ++row; col = 0; continue; }
Aqui está minha gramática PEG (.js) que parece funcionar bem na RFC 4180 (ou seja, lida com os exemplos em http://en.wikipedia.org/wiki/Comma-separated_values ):
Experimente em http://jsfiddle.net/knvzk/10 ou http://pegjs.majda.cz/online . Faça o download do analisador gerado em https://gist.github.com/3362830 .
fonte
csvToArray v1.3
Uma função compacta (645 bytes), mas compatível, para converter uma sequência CSV em uma matriz 2D, em conformidade com o padrão RFC4180.
https://code.google.com/archive/p/csv-to-array/downloads
Uso comum: jQuery
Uso comum: Javascript
Substituir separador de campos
Substituir separador de registros
Substituir Ignorar Cabeçalho
Substituir tudo
fonte
Não sei por que não pude kirtans ex. trabalhar para mim. Parecia estar falhando em campos vazios ou talvez campos com vírgulas à direita ...
Este parece lidar com ambos.
Não escrevi o código do analisador, apenas um invólucro em torno da função do analisador para fazer esse trabalho para um arquivo. veja Atribuição
fonte
Expressões regulares para o resgate! Essas poucas linhas de código manipulam campos citados corretamente com vírgulas, aspas e novas linhas incorporadas, com base no padrão RFC 4180.
Você não precisa de um gerador de analisador como lex / yacc. A expressão regular lida com o RFC 4180 corretamente, graças a aparência positiva, aparência negativa e aparência positiva.
Clone / faça o download do código em https://github.com/peterthoeny/parse-csv-js
fonte
Eu construí este script javascript para analisar um CSV em seqüência de caracteres para o objeto de matriz. Acho melhor dividir todo o CSV em linhas, campos e processá-los de acordo. Eu acho que facilitará a alteração do código para atender às suas necessidades.
Espero que ajude você. Obrigado.
fonte
Por que não usar apenas .split (',')?
http://www.w3schools.com/jsref/jsref_split.asp
fonte