J'ai eu un problème avec la reconnaissance de la sortie CSV & ouvert dans Excel. Dans mon application web, j'ai une servlet Java qui renvoie les résultats de la recherche à l'utilisateur. Les résultats de la recherche sont fournis par un serveur Apache Solr. Il y a une option sur l'interface graphique qui permet à l'utilisateur de demander les résultats de la recherche au format "CSV". Si cette option est sélectionnée, la requête est réexécutée sur Solr en ajoutant un paramètre "wt = csv". Ensuite, un filtre java ajoute des en-têtes pour renvoyer les résultats au format CSV. Mais ça ne fonctionne pas correctement.Type MIME/type de contenu pour l'ouverture de fichiers CSV en utilisant Excel dans IE & Firefox
- Dans IE (ver 8.0), je suis invité à "Ouvrir" ou "Enregistrer" le fichier. Si je sélectionne "Ouvrir"; il ne fait que copier le texte au format CSV 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 demandé est indisponible ou introuvable. "
- Dans Firefox (ver 10.0.9) également; Je suis invité à ouvrir ou enregistrer le fichier. Mais pour ouvrir le fichier CSV; l'option par défaut est Notepad & Excel n'est même pas répertorié. Si je clique sur "Enregistrer" alors il télécharge le fichier CSV & Je peux l'ouvrir dans Excel et il 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 fonctionner. J'ai utilisé Firefox pour inspecter les en-têtes qui sont renvoyés & Je vois ce qui suit -
Content-Disposition: attachment; filename = Download.CSV
Content-Type: text/plain; charset = UTF-8
serveur: Jetty (7.xy-snapshot)
Transfer-Encoding: chunked
Vary : Accept-Encoding
Même si le type de contenu est spécifié en tant que csv ou excel; quand il atteint le navigateur, il est interprété comme du texte/plaine & Je pense que c'est le problème. Vous n'êtes pas sûr de l'en-tête ou de l'encodage que je devrais définir? Aucune suggestion? Merci.
L'extension .csv est-elle associée à Excel sur votre ordinateur? Sinon, IE et Firefox ne sauront probablement pas qu'il doit être ouvert avec Excel. – GreenGiant