Mais
Como exportar informações de array JavaScript para csv (no lado do cliente)?
Eu sei que há muitas perguntas desta natureza, mas preciso fazer isto usando o JavaScript. Estou utilizando `Dojo 1.8' e tenho todas as informações de atributos em array, que se parece com isto:
[["name1", "city_name1", ...]["name2", "city_name2", ...]]
Alguma ideia de como eu posso exportar isto para o CSV
do lado do cliente?
457
3
Você pode fazer isso em JavaScript nativo. Você'terá que analisar seus dados no formato CSV correto (assumindo que você esteja usando um array de arrays para seus dados como você descreveu na pergunta):
ou o caminho mais curto (usando funções de seta):
Então você pode utilizar as funções
window.open' e
encodeURI' do JavaScript's para baixar o arquivo CSV assim:Edit:
Se você quiser dar um nome específico ao seu arquivo, você tem que fazer as coisas de forma um pouco diferente, já que isso não é suportado acessando um URI de dados utilizando o método `window.open`. Para conseguir isso, você pode criar um nó DOM oculto ``DOM e definir seu atributo `download` como a seguir:Vim aqui à procura de um pouco mais de conformidade com o RFC 4180 e não consegui encontrar uma implementação, por isso fiz uma (possivelmente ineficiente) para as minhas próprias necessidades. Pensei em compartilhá-la com todos.
Espero que isto ajude alguém no futuro. Isto combina tanto a codificação do CSV quanto a capacidade de baixar o arquivo. No meu exemplo em [jsfiddle](http://jsfiddle.net/a5E9m/2/). Você pode baixar o arquivo (assumindo o navegador HTML 5) ou visualizar a saída no console.
UPDATE:
O cromado parece agora ter perdido a capacidade de nomear o ficheiro. I'não tenho certeza do que's aconteceu ou como corrigi-lo, mas sempre que eu uso este código (incluindo o jsfiddle), o arquivo baixado agora é chamado de
download.csv
.A solução de @Default funciona perfeitamente no Chrome (muito obrigado por isso!), mas eu tive um problema com o IE.
Aqui's uma solução (funciona no IE10):