JAVA : l'Exportation de Données (base de données) d'excel et de l'envoyer à côté client

Comme le titre le suggère, j'ai besoin de mettre certaines données (que j'ai obtenu à partir de la base de données) dans une feuille excel, puis de l'envoyer à côté client de sorte que l'utilisateur peut enregistrer , ouvrir ou d'annuler l'action.

J'ai vu quelques articles à ce sujet, le plus proche étant : Comment puis-je obtenir de l'utilisateur pour le téléchargement de mon fichier? (Java, MVC, Excel, POI). Se référant aux liens fournis par Stevens j'ai essayé le code suivant :

public String execute(){
    setContentDisposition("attachment; filename=\"" + ename + "\"");
    try{
        ServletContext servletContext = ServletActionContext.getServletContext();
        String filePath = servletContext.getRealPath("/WEB-INF/template/excel/mytemplate.xls");
        File file = new File(filePath);
        Workbook wb = WorkbookFactory.create(new FileInputStream(file));
        Sheet sheet = wb.getSheetAt(0);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        wb.write(baos);
        InputStream excelStream;
        excelStream = new ByteArrayInputStream(baos.toByteArray());
    }catch(Exception e){
        System.out.println(e.getMessage());
    }
    return SUCCESS;
}

Ici tout d'abord WorkbookFactory n'est pas défini. Deuxièmement, je ne pouvais pas comprendre correctement le fonctionnement du code.

J'ai aussi trouvé ce lien : http://www.roseindia.net/answers/viewqa/Java-Beginners/14930-How-to-export-data-from-database-to-excel-sheet-by-using-java--in-standalone-project.html. Mais ici, le fichier excel est enregistré sur le serveur. Je veux que le fichier ne doit pas être enregistré sur le serveur, il devrait aller directement à côté client

(Si ça aide), je suis en utilisant : le framework struts 2, hibernate

Je suis ouvert à d'autres choses comme le PI de l'API de jQuery ou tout autres bonnes choses.

Je ne peux pas utiliser displayTag pour une raison quelconque.

Javascript serait mon dernier recours (bien que j'ai mis en œuvre avec elle), car elle nécessite une modification de certains paramètres de sécurité par défaut du navigateur (Si cela peut être évité, je suis ouvert à du javascript).

Veuillez indiquer comment dois-je aller à ce sujet maintenant.

Merci!!

EDIT :

    <result-types>
        <result-type name="jsp" class="org.apache.struts2.views.jsp"/>
        <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
        <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
    </result-types>
    <action name="myActionName" class="package.myActionClass">
         <result type="stream">
            <param name="contentType">"application/vnd.ms-excel"</param>
            <param name="inputName">excelStream</param>
            <param name="contentDisposition">contentDisposition</param>
            <param name="bufferSize">1024</param>
         </result>
    </action>

L'erreur lors de l'exécution de l'action:

java.lang.reflect.InvocationTargetException

java.lang.IncompatibleClassChangeError: Class org.apache.poi.hssf.usermodel.HSSFWorkbook does not implement the requested interface org.apache.poi.ss.usermodel.Workbook
pour comprendre le code que vous devez savoir PVE.WorkbookFactory est une partie de la PI de l'API qui est un projet Apache.
Je pense que vous devriez le faire avec l'aide de fichiers temporaires "Fichier.createTempFile("préfixe","suffixe"). Il va créer un fichier dans le dossier temp et alors u peut écrire et enregistrer votre contenu dans le dossier temp. et après l'envoi de ce fichier à côté client , vous pouvez les supprimer.
Créer un projet autonome qui utilise POI pour créer un modèle de document avec quelques données factices. Ensuite, dans le conteneur de faire la même chose mais maintenant, l'obtention des données avec hibernate. Vous devriez être en mesure d'enregistrer le fichier sur le serveur et de les analyser (c'est juste un test, vous pouvez garder le fichier en mémoire). En ce qui concerne struts2 est concerné, il est juste une mater de l'envoi du fichier.
J'ai découvert que je n'avais pas ajouté le poi-ooxml pot, la raison pour WorkbookFactory erreur. Deuxièmement, maintenant que j'ai ajouté le fichier jar requis, j'obtiens une erreur lorsque je lance le projet. L'erreur est --> ÉCHEC de l'application Déployée au chemin de contexte / mais le contexte n'a pas pu démarrer....\nbproject\build-impl.xml:770: Le module n'a pas été déployé. BUILD FAILED (durée totale: 5 secondes). Voir le modifier pour le fichier struts-config .xml fichier de code.
vais essayer ça une fois que je reçois par le biais de l'envoi d'une feuille excel à côté client.

OriginalL'auteur kanishk | 2012-02-15