O que esta ferramenta faz
Um array de objetos vira linhas; as chaves viram o cabeçalho.
[
{ "nome": "Ada", "nascimento": 1815 },
{ "nome": "Alan", "nascimento": 1912 }
]
nome,nascimento
Ada,1815
Alan,1912
A raiz precisa ser um array de objetos: uma tabela é uma lista de registros, e um objeto sozinho não tem linhas. Embrulhe em [ ] se você queria uma linha.
Identificadores longos mantêm os dígitos
[{ "id": 12345678901234567890 }]
sai com os vinte dígitos. Conversores que analisam primeiro o JSON para um valor JavaScript arredondam além de uns quinze — em silêncio, e para um número que já não corresponde à linha de onde veio.
Três ambiguidades, ditas
Null e string vazia são a mesma célula. null e "" não produzem nada entre os separadores, e leitor nenhum os distinguirá depois. Se a diferença importa, o CSV é o destino errado.
Um valor aninhado vira JSON na célula. Uma célula carrega um valor; a sua chave carrega uma subárvore. Espalhá-la por colunas pai.filho inventadas imporia uma convenção que o seu consumidor nunca aprovou.
Registros irregulares dão uma união. O cabeçalho é toda chave vista, na ordem de aparição; a quem falta uma recebe célula vazia. Descartar a coluna, ou a linha, perderia dados por amor a um retângulo arrumado.
A opção Excel
O Excel não lê com confiança um CSV em UTF-8 simples: ele adivinha a codificação pelos bytes e quase sempre adivinha a página de código antiga do seu sistema — é assim que café vira café.
A opção Excel escreve duas coisas que o Excel entende: uma marca de ordem de bytes e uma linha sep=, no início nomeando o separador. Nenhuma é CSV padrão — sep= é até uma extensão da Microsoft que outros leitores mostrarão como primeira linha de dados — daí ser uma opção que você liga, e não o padrão.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.