Se connecter avec
S'enregistrer | Connectez-vous

Comment faire pour faire telecharger un fichier excel [java]

Dernière réponse : dans Programmation

J'ai un site web avec des jsp et servlet

J'arrive a genérer dynamiquement un fichier excel suivant des données de la DB, ce grace a POI
(http://jakarta.apache.org/poi/index.html , super en passant!)

Mais maintenant, au lieux d'ouvrir le fichier excel dans une nouvelle fenetre ou faire faire a l'utilisateur un clic droit et 'save as', je voudrai que la fenêtre d'enregistrement s'ouvre automatiquement

Je me doute que ca a a voir avec le type MIME, mais quoi?

Autres pages sur : telecharger fichier excel java

Lassé par la pub ? Créez un compte

cisco a écritJ'ai un site web avec des jsp et servlet

J'arrive a genérer dynamiquement un fichier excel suivant des données de la DB, ce grace a POI
(http://jakarta.apache.org/poi/index.html , super en passant!)

Mais maintenant, au lieux d'ouvrir le fichier excel dans une nouvelle fenetre ou faire faire a l'utilisateur un clic droit et 'save as', je voudrai que la fenêtre d'enregistrement s'ouvre automatiquement

Je me doute que ca a a voir avec le type MIME, mais quoi?


applet côté client qui dl le fic sur le srv et l'ouvre.

Je ne pense pas que ce soit la bonne réponse...

Le fichier xls est généré dynamiquement coté serveur, et est envoyer vers le client... il n'est donc pas question de le renvoyé vers le serveur...

pour info:
  1. protected void processRequest(HttpServletRequest request,
  2. HttpServletResponse response) throws ServletException, IOException {
  3.  
  4. response.setContentType("application/vnd.ms-excel");
  5. HSSFWorkbook wb = new HSSFWorkbook();
  6. HSSFSheet sheet = wb.createSheet("new sheet");
  7.  
  8. // Create a row and put some cells in it. Rows are 0 based.
  9. HSSFRow row = sheet.createRow((short)0);
  10.  
  11. // Create a cell and put a value in it.
  12. HSSFCell cell = row.createCell((short)0);
  13.  
  14. cell.setCellValue(1);
  15.  
  16. // Or do it on one line.
  17. row.createCell((short)1).setCellValue(1.2);
  18. row.createCell((short)2).setCellValue("This is a string");
  19. row.createCell((short)3).setCellValue(true);
  20. // Write the output
  21. OutputStream out = response.getOutputStream();
  22. wb.write(out);
  23. out.close();
  24. }

c'est bon, c'est bien le type mime qu'il faut changer

(le response.setContentType("application/vnd.ms-excel"); a mettre dans un type inconnu)

Citation :

applet côté client qui dl le fic sur le srv et l'ouvre


Je pense que les applets sont la plaie du java, le genre de truc a utiliser que si tu n'a VRAIMENT pas le choix

cisco a écritc'est bon, c'est bien le type mime qu'il faut changer

(le response.setContentType("application/vnd.ms-excel"); a mettre dans un type inconnu)

Citation :

applet côté client qui dl le fic sur le srv et l'ouvre


Je pense que les applets sont la plaie du java, le genre de truc a utiliser que si tu n'a VRAIMENT pas le choix



Oui, MS y est pour beaucoup.
Pour le reste, ce qui est chiant, c'est la gestion de la sécurité. Mais c'est aussi la seule efficace (caca beaurk les a ctiveX disperseurs de virus).

Mais là, manifestement, je n'ai pas compris ce que tu voullais : j'ai cru que tu cherchais à éviter tout clic de la part de l'utilisateur alors que dans ton cas, l'utilisateur doit bien cliquer sur qqch pour que ça envoie la requête au serveur pour qu'il construise le fichier le l'envoie, non ?

cisco a écritc'est bon, c'est bien le type mime qu'il faut changer

(le response.setContentType("application/vnd.ms-excel"); a mettre dans un type inconnu)

Citation :

applet côté client qui dl le fic sur le srv et l'ouvre


Je pense que les applets sont la plaie du java, le genre de truc a utiliser que si tu n'a VRAIMENT pas le choix

je connais des applets géniales

Citation :

j'ai cru que tu cherchais à éviter tout clic de la part de l'utilisateur alors que dans ton cas, l'utilisateur doit bien cliquer sur qqch pour que ça envoie la requête au serveur pour qu'il construise le fichier le l'envoie, non ?

Oui, enfin l'utilisateur a un bouton style
'rapport sous format excel', et quand il clique le bouton (click gauche de sourie), la fenetre de telechargement s'ouvre

Ce que je ne voulais pas, c'est que le fichier excel s'ouvre directement dans le navigateur


Citation :

je connais des applets géniales

C'est sur, mais ca marche que si le client:
- a la bonne version de jdk
- la bonne config de sécurité

Et pour une entreprise, il faut deployer les jdk+java.policy, et du coup on se retrouve avec des 'client lourds'

Ben tu prends websphere, par exemple. C'est applets côté client et c'est extrèmement puissant.

Pour ta question de départ, en fait l'utilisateur va ouvrir l'excel de manière complètement classique : click + voullez-vous ouvrir ou enregistrer + mémorisation éventuelle du choix.

Désolé, c pas ce que j'avais compris.

Citation :

Pour ta question de départ, en fait l'utilisateur va ouvrir l'excel de manière complètement classique : click + voullez-vous ouvrir ou enregistrer + mémorisation éventuelle du choix.

Non, la manière classique c'est que le fichier s'ouvre dans une nouvelle fenêtre d'un navigateur

Citation :

Ben tu prends websphere, par exemple. C'est applets côté client et c'est extrèmement puissant.


La je crois que tu ne fait pas honneur à ton pseudo...
Websphere est un serveur d'application (J2EE), comme weblogic/jboss/...

Et le fait qu'il y ait une applet sur la console d'administration est un autre point: il n'y a que l'administrateur qui utilise cette console

des fois que ca serve a quelqu'un:

  1. String theReportFile = "Port passport.xls";
  2.  
  3. response.setContentType ("application/octet-stream");
  4. response.setHeader ("Content-Disposition", "attachment; filename=\""+theReportFile+"\"");


est le MIME correct
Expert Programmation

3 ans, 4 mois et 24 jours que ce topic dormait en paix :ouch:  pour réclamer ce que tu peux trouver à la première page du manuel...

Si quelqu'un a quand même une réponse...
Lassé par la pub ? Créez un compte