Comment faire pour faire telecharger un fichier excel [java]

  • Auteur de la discussion cisco
  • Date de début

cisco

Habitué
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
( , 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?
 

JAVA Alive

Expert
[citation=2005,1][nom]cisco a écrit[/nom]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
( , 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?
[/citation]

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

cisco

Habitué
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:
[cpp]
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

response.setContentType("application/vnd.ms-excel");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

// Create a row and put some cells in it. Rows are 0 based.
HSSFRow row = sheet.createRow((short)0);

// Create a cell and put a value in it.
HSSFCell cell = row.createCell((short)0);

cell.setCellValue(1);

// Or do it on one line.
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("This is a string");
row.createCell((short)3).setCellValue(true);
// Write the output
OutputStream out = response.getOutputStream();
wb.write(out);
out.close();
}
[/cpp]
 

cisco

Habitué
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)

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
 

JAVA Alive

Expert
[citation=2017,1][nom]cisco a écrit[/nom]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)

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

[/citation]

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 ?
 

tomiotomio

Expert
[citation=2017,1][nom]cisco a écrit[/nom]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)

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

[/citation]je connais des applets géniales
 

cisco

Habitué
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


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'
 

JAVA Alive

Expert
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.
 

cisco

Habitué
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

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
 

cisco

Habitué
des fois que ca serve a quelqu'un:

[cpp]
String theReportFile = "Port passport.xls";

response.setContentType ("application/octet-stream");
response.setHeader ("Content-Disposition", "attachment; filename=\""+theReportFile+"\"");
[/cpp]

est le MIME correct
 

abouallaga

Nouveau membre
Bonjour;
pouvez pouvez vous m'expliquer comment on utilise POI pour ouvrir un fichier excel
est ce que je dois télécharger quelque chose et qu'est ce que je vais mettre dans le code?
merci de me répondre.
 

zeb

Modérateur
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...
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 125
Messages
6 717 736
Membres
1 586 357
Dernier membre
Peg7
Partager cette page
Haut