Preciso enviar um arquivo CSV na resposta HTTP. Como posso definir a resposta de saída como formato CSV?
Isto não está a funcionar:
Response.ContentType = "application/CSV";
Usar text/csv
é o tipo mais apropriado.
Você também deve considerar adicionar um Content-Disposition
cabeçalho à resposta. Geralmente, um texto / csv é carregado por um Internet Explorer diretamente em uma instância hospedada do Excel. Isso pode ou não ser um resultado desejável.
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
O exemplo acima fará com que apareça uma caixa de diálogo "Salvar como", que pode ser o que você pretende.
O tipo MIME do CSV é text / csv, de acordo com a RFC 4180 .
fonte
Use
text/csv
como o tipo de conteúdo.fonte
Ao longo dos anos, aprimorei um conjunto perfeito de cabeçalhos para isso, que funcionam brilhantemente em todos os navegadores que conheço.
fonte
Experimente um desses outros tipos MIME (a partir daqui: http://filext.com/file-extension/CSV )
Além disso, o tipo MIME pode fazer distinção entre maiúsculas e minúsculas ...
fonte
Basta usar assim
fonte
return new EmptyResult()
para obter o nome do arquivo. Caso contrário, o IE tentará salvar o arquivo comoActionName.htm
.No ASP.net MVC, você pode usar ae
FileContentResult
oFile
método:fonte
Descobri que o problema com o IE é que ele fareja os dados de retorno e decide por qual tipo de conteúdo ele acha que foi enviado. Há vários efeitos colaterais que isso causa, como abrir sempre uma caixa de diálogo saveAs para arquivos de texto porque você está usando a compactação de transferências de dados. A solução é (em código php) ......
fonte
A configuração do tipo e da disposição do conteúdo, conforme descrito acima, produz resultados extremamente variados com diferentes navegadores:
IE8: Caixa de diálogo SaveAs, conforme desejado, e Excel como o aplicativo padrão. 100% bom.
Firefox: o diálogo SaveAs aparece, mas o Firefox não faz ideia de que é uma planilha. Sugere abri-lo com o Visual Studio! 50% bom
Chrome: as dicas são totalmente ignoradas. Os dados CSV são mostrados no navegador. 0% bom.
É claro que em todos esses casos estou me referindo aos navegadores quando saem da caixa, sem personalização dos mapeamentos mime / application.
fonte
Sugiro inserir um caractere '/' na frente de 'myfilename.cvs'
Espero que você obtenha melhores resultados.
fonte
Para o C # MVC 4.5, você precisa fazer o seguinte:
fonte