Análise de arquivo CSV com JavaScript
Portuguese (Português) translation by Kaique Silva (you can also view the original English article)



Análise de arquivo CSV com JavaScript



O arquivo no formato CSV (Valores separado por virgula) é uma maneira popular de troca de dados entre aplicações
Com esta dica, você vai aprender bem como utilizar o JavaScript para visualizar dados de arquivos do tipo CSV.
Criando um arquivo CSV
Para iniciarmos, vamos criar um arquivo CSV bem simples. Para fazer, vamos utilizar o Mockaroo, que é uma ferramenta online para gerar dados. Aqui esta nosso arquivo:



Convertendo um arquivo CSV em uma tabela HTML
construindo uma table HTML associada.
Como primeiro passo, nós utilizaremos a função ajax presente no jQuery para recuperar dados do arquivo:
1 |
$.ajax({ |
2 |
url: 'csv_data.csv', |
3 |
dataType: 'text', |
4 |
}).done(successFunction); |
Assumindo que a requisição do tipo AJAX foi efetuada com sucesso, quando a função successFunction foi executada. Esta função é responsável por analisar o dado retornado e transforma-lo em uma tabela HTML:
1 |
function successFunction(data) { |
2 |
var allRows = data.split(/\r?\n|\r/); |
3 |
var table = '<table>'; |
4 |
for (var singleRow = 0; singleRow < allRows.length; singleRow++) { |
5 |
if (singleRow === 0) { |
6 |
table += '<thead>'; |
7 |
table += '<tr>'; |
8 |
} else { |
9 |
table += '<tr>'; |
10 |
}
|
11 |
var rowCells = allRows[singleRow].split(','); |
12 |
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) { |
13 |
if (singleRow === 0) { |
14 |
table += '<th>'; |
15 |
table += rowCells[rowCell]; |
16 |
table += '</th>'; |
17 |
} else { |
18 |
table += '<td>'; |
19 |
table += rowCells[rowCell]; |
20 |
table += '</td>'; |
21 |
}
|
22 |
}
|
23 |
if (singleRow === 0) { |
24 |
table += '</tr>'; |
25 |
table += '</thead>'; |
26 |
table += '<tbody>'; |
27 |
} else { |
28 |
table += '</tr>'; |
29 |
}
|
30 |
}
|
31 |
table += '</tbody>'; |
32 |
table += '</table>'; |
33 |
$('body').append(table); |
34 |
}
|
Então, a ideia de converter cada linha do arquivo CSV em uma linha de tabela. Com isto em mente, vamos a uma breve explicação sobre o funcionamento do código acima:
- Primeiro, nós utilizamos uma regex para separar a resposta AJAX, e separamos em linhas do CSV.
- Na sequência, nós iteramos através de linhas do CSV e separamos em campos.
- Finalmente, nós rondamos os campos e criamos as células correspondentes.
Logo adiante, para chegar a um entendimento relacionado a este código, consideramos a seguinte visualização:



Neste ponto, é importante evidenciar o porque nós utilizamos o padrão regex "/\r\n|\r/" para separa em linhas o conteúdo CSV.
Sabemos que é provável, que tenhamos diferentes representações de uma nova linha através do sistema operacional. Por exemplo, em plataformas Windows os caracteres que representam uma nova linha são \r\n. Ele diz, que usando a regex acima, nós estaremos aptos a identificar estas possíveis representações.
Em adição, muitos editores de texto permitem que nós escolhamos um formato de nova linha. Tome, como premissa, o Notepad++. Neste editor, nós podemos especificar que o formato desejado para um documento pela navegação para este caminho:



Para que isto seja ilustrado, considere nosso arquivo. Dependendo do formato que escolhemos, ele sera bastante semelhante a este:



Adicionando estilos a tabela HTML
Antes nós olhamos para a tabela resultante, vamos adicionar alguns estilos básicos:
1 |
table { |
2 |
margin: 0 auto; |
3 |
text-align: center; |
4 |
border-collapse: collapse; |
5 |
border: 1px solid #d4d4d4; |
6 |
}
|
7 |
|
8 |
tr:nth-child(even) { |
9 |
background: #d4d4d4; |
10 |
}
|
11 |
|
12 |
th, td { |
13 |
padding: 10px 30px; |
14 |
}
|
15 |
|
16 |
th { |
17 |
border-bottom: 1px solid #d4d4d4; |
18 |
}
|
Aqui esta a tabela gerada:



Conclusão
Neste pequeno artigo, nós passamos por um processo de conversão de um arquivo CSV em uma tabela HTML. Fatídico, nós utilizamos uma ferramenta baseada nesta conversão, acho que isto sempre sera mais desafiador para alcançar isto escrevendo seu próprio código.
Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!



