IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[Servlet] Fichier xls protégé apres envoi au client


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club Avatar de romdelf
    Profil pro
    Inscrit en
    Février 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 91
    Points : 62
    Points
    62
    Par défaut [Servlet] Fichier xls protégé apres envoi au client
    Bonjour,
    Je ne peux pas ouvrir un fichier Excel côté client. Je crée un fichier Excel coté serveur (pour info, j'utilise JasperReport qui transforme un rapport en fichier xls). Je crée un File "test.xls" coté serveur, et Jasper met automatiquement le code Excel à l'interieur. J'ai testé, coté serveur le fichier marche, je peux le lire.
    Ensuite, je mets le contenu du fichier dans un StringBuffer à l'aide d'un BufferedReader. Puis je mets ce buffer dans le output ma servlet.

    Mais lorsque je lance mon appli et que j'arrive au moment ou la servlet doit me retourner mon fichier xls (IE ouvre automatiquement Excel), j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Impossible d'acceder au fichier 'test.xls'. Le fichier peut etre en lecture seule, ou vous essayer d'acceder à un emplacement en lecture seule. 
    Il est egalement possible que ..... le serveur ne reponde pas.
    Ensuite, IE me propose de le sauvegarder. Je le place sur le bureau. Il n'est pas vide (440ko). Mais là, pareil, impossible de l'ouvrir. Meme message de protection en lecture seule.

    Existe t'il un probleme avec les fichiers Excel? On dirait que la copie que je fais coté serveur pointe toujours vers le fichier coté serveur. Je ne trouve pas cela normal...
    Est ce que quelqu'un a une idée?
    Merci[/code]

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    Bonjour,

    mets le code de ta servlet.

  3. #3
    Membre du Club Avatar de romdelf
    Profil pro
    Inscrit en
    Février 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    Pour info, j'utilise Struts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    public class SendAction extends Action {
    public ActionForward execute(ActionMapping mapping,ActionForm form,
    		HttpServletRequest request,HttpServletResponse response) throws Exception {
    	...
    	new CallJasper().execute(request, response);	
    	return null;
    }
     
     
    public class CallJasper {
    public void execute(HttpServletRequest request, HttpServletResponse response) {
    	...
    	StringBuffer sbuf = new StringBuffer();	
    	PrintWriter writer = response.getWriter();
    	File destFile = File.createTempFile("test", ".xls");
    	exporter.exportReport(); //Jasper rempli le fichier
     
    	FileReader writeflux = new FileReader(destFile);
    	BufferedReader buffer = new BufferedReader(writeflux);
    	String s = "";
    	while ((s = buffer.readLine()) != null)
    		sbuf.append(s);
    	buffer.close();
    	writeflux.close();
    	writer.write(sbuf.toString());
    }
    }
    Voilà.
    PS: j'ai remplacé le fichier par un fichier temporaire coté serveur...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    Le probleme vient de la facon de lire le fichier Excel (BufferedReader).
    Le code suivant doit marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                response.setContentType("application/vnd-ms-excel");
                response.setHeader("Content-disposition", "attachment; filename=rapport.xls");
                PrintWriter writer = response.getWriter();             
                FileInputStream fis = new FileInputStream(destFile);  
                int c=-1;
                while ((c = fis.read()) != -1)
                    writer.print((char)c); 
     
                fis.close();
                writer.close();

  5. #5
    Membre du Club Avatar de romdelf
    Profil pro
    Inscrit en
    Février 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    MERCI mille fois!!!!
    1 semaine que je cherchais à savoir pourquoi....

    Serait-il possible que tu m'expliques la différence entre nos 2 méthodes? Est-ce un probleme de caractères spéciaux?
    Ce n'est quand meme pas le fait de lire ligne par ligne plutot que par caractere...

    Merci encore!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    Non je dirais que dans un cas il lit des chaînes de caractères et dans l'autre il traite le fichier comme un binaire.

    Excel n'étant pas à proprement parler au format texte.

  7. #7
    Membre du Club Avatar de romdelf
    Profil pro
    Inscrit en
    Février 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    OK!
    Merci quand meme pour ton aide...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Ouvrir fichier XLS protégé par un mot de passe
    Par docleka dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/09/2012, 12h49
  2. supprimer un fichier en local après envoi en ftp
    Par tomas_o_malley dans le forum Windows
    Réponses: 6
    Dernier message: 28/09/2009, 09h10
  3. Réponses: 1
    Dernier message: 04/06/2007, 11h34
  4. Rechargement de page après envoi de fichier
    Par marieR dans le forum Struts 1
    Réponses: 11
    Dernier message: 30/01/2007, 14h40
  5. Réponses: 4
    Dernier message: 19/07/2006, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo