Type MIME Content-type pour l'ouverture des fichiers CSV à l'aide d'Excel dans IE & Firefox

J'ai eu un problème avec l'obtention de sortie CSV pour être reconnu & ouvert dans Excel. Dans mon application web, j'ai un java servlet qui renvoie des résultats de recherche à l'utilisateur. Les résultats de la recherche sont livrés par un serveur Apache Solr. Il y a une option sur l'interface graphique front-end " qui permet à l'utilisateur de demander les résultats de la recherche en format “CSV”. Si cette option est sélectionnée, alors la requête est ré-exécuté sur Solr par l'ajout d'un "wt=csv" param. Puis un java filtre ajoute des en-têtes pour retourner les résultats au format CSV formaté en texte. Mais il ne fonctionne pas correctement.

  • Dans IE (version 8.0) - je suis invité à “Ouvrir” ou “Enregistrer” le fichier. Si je sélectionne “Ouvrir”; il vient de décharges au format CSV texte sur l'écran au lieu de l'ouvrir dans Excel. Et si je sélectionne “Enregistrer”; je reçois un message d'erreur – “Impossible d'ouvrir ce site internet. Le site requis n'est pas disponible ou ne peut être trouvé”.
  • Dans Firefox (version 10.0.9) aussi, j'invite à ouvrir ou enregistrer le fichier. Mais pour ouvrir le fichier CSV; l'option par défaut est le bloc-notes & Excel n'est même pas répertorié. Si je clique sur “Enregistrer”, puis il ne le téléchargement du fichier CSV & je peux l'ouvrir dans Excel et qu'elle est correctement reconnu par Excel.

J'ai essayé une variété d'en-têtes & combinaisons –

  //((HttpServletResponse)response).setHeader("Content-Type", "application/octet; charset=utf-8");
  ((HttpServletResponse)response).setHeader("Content-Type", "text/csv");
  //((HttpServletResponse)response).setHeader("Content-Type", "application/vnd.ms-excel");
  //((HttpServletResponse)response).setHeader("Cache-Control", "private, private,max-age=0,must-revalidate");
  //((HttpServletResponse)response).setHeader("Content-Encoding", "gzip");
  //((HttpServletResponse)response).setHeader("Content-Encoding", "binary");
  ((HttpServletResponse)response).setHeader("Content-Disposition", "attachment; filename=Download.CSV");
  //((HttpServletResponse)response).setHeader("Content-Disposition", "inline; filename=Download.CSV;");

Mais aucun d'entre eux semblent être au travail. J'ai utilisé Firefox pour inspecter les en-têtes qui sont envoyés de retour & je vois les suivantes –

Content-Disposition:attachment; filename=Télécharger.CSV

Content-Type:text/plain;charset=UTF-8

Serveur:Jetty(7.x.y-SNAPSHOT)

Transfer-Encoding:chunked

Vary:Accept-Encoding

Même si le type de contenu est spécifié au format csv Ou excel; quand il atteint le navigateur, il est interprété comme text/plain & je pense que c'est la question. Pas sûr de ce que l'en-tête Ou le codage, je devrais être? Toutes les suggestions? Merci.

Est le .extension csv associés à Excel sur votre ordinateur? Si non, IE et Firefox ne savez probablement qu'il doit être ouvert avec Excel.

OriginalL'auteur Yoda_SO_99999 | 2012-12-05