JSP génération de feuille de calcul Excel (XLS) à télécharger
J'ai cette application que je suis en développement en JSP et je souhaite exporter les données de la base de données XLS (MS Excel).
Est-il possible sous tomcat juste écrire un fichier comme si c'était normal d'une application Java, puis de générer un lien vers ce fichier? Ou dois-je utiliser une API spécifique pour cela?
Vais-je avoir l'autorisation des problèmes en faisant cela?
- BalusC de jeter un peu de lumière à mon problème, économie HTML dans un fichier avec ".xls" extension peuvent travailler dans certaines versions d'Excel, mais dans d'autres, il vous invite à un avertissement. C'est pourquoi j'ai déménagé à quelques la 3e partie de la bibliothèque (GemBox.Feuille de calcul pour Java) et je suis de la génération d'un véritable fichier Excel (comme ici).
Vous devez vous connecter pour publier un commentaire.
Alors que vous pouvez utiliser à part entière de la bibliothèque comme JExcelAPI, Excel seront également lire CSV et HTML des tables à condition de définir le temps de réponse Type MIME à quelque chose comme "application/vnd.ms-excel".
Selon la complexité de la feuille de calcul doit être, CSV ou HTML peut faire le travail pour vous, sans une 3ème partie de la bibliothèque.
Ne pas utiliser de HTML des tables avec un
application/vnd.ms-excel
type de contenu. Vous êtes alors essentiellement à tromper Excel avec un mauvais type de contenu qui serait la cause de l'échec et/ou de mises en garde dans les dernières versions d'Excel. Il sera également messup la source HTML original lorsque vous modifiez et enregistrez le dans Excel. Il suffit de ne pas le faire.CSV est un format standard qui bénéficie de l'aide d'Excel sans problème et est en fait facile et efficace de la mémoire à générer. Bien qu'il existe des bibliothèques, vous pouvez en fait aussi facilement écrire en moins de 20 lignes (drôle pour ceux qui ne peuvent pas résister). Vous avez juste à coller le RFC 4180 spec qui, fondamentalement, ne contient que 3 règles:
Voici un coup d'envoi exemple:
Voici un exemple de comment vous pouvez l'utiliser:
Et à l'intérieur d'une Servlet (oui, Servlet, ne pas utiliser de JSP pour cela!) vous pouvez pratiquement faire:
Carte cette servlet sur quelque chose comme
/csv/*
et invoquer celle-ci comme quelque chose commehttp://example.com/context/csv/filename.csv
. C'est tout.Noter que j'ai ajouté la possibilité de spécifier le caractère de séparation séparément, car elle dépend de la locale utilisée si Excel n'accepte qu'un virgule
,
ou un point-virgule;
CSV séparateur de champ. Notez que j'ai aussi ajouté le nom de fichier à l'URL pathinfo, car un certain webbrowser élaboré par une équipe de Redmond n'enregistrez pas le télécharger avec le bon nom de fichier.Vous aurez probablement besoin d'une bibliothèque pour manipuler des fichiers Excel, comme JExcelAPI ("jxl") ou POI. Je suis plus familier avec jxl et il peut certainement écrire des fichiers. Vous pouvez les générer et de les stocker en servant une URL, mais je ne le ferais pas. Les fichiers générés sont une douleur. Ils ajoutent à une complication de la forme sur la simultanéité, les procédés de nettoyage, etc.
Si vous pouvez générer le fichier à la volée et de les lire pour le client par le biais de la norme servlet mécanismes.
Si il est généré de nombreux, peut de fois ou la génération est cher, alors vous pouvez mettre en cache le résultat d'une certaine manière, mais je serais plus enclin à garder en mémoire qu'en tant que fichier. Je serais certainement à éviter, si vous le pouvez, reliant directement le fichier généré par l'URL. Si vous allez via une servlet, il va vous permettre de modifier votre impleemntation plus tard. C'est la même encapsualtion concept comme dans OO dsign.
PVE ou JExcel sont bonnes Api. Personnellement, j'aime mieux POI, plus de POI est constamment mis à jour. En outre, il y a plus de ressources en ligne sur les POI que JExcel dans le cas où vous avez des questions. Cependant, l'un des deux fait un excellent travail.
peut-être vous devriez envisager d'utiliser une partie de l'outil de rapports avec une option d'exportation des fichiers en format XLS. ma suggestion est JasperReports