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

API standards et tierces Java Discussion :

[Javamail] Insérer le contenu d'un fichier Excel dans le corps du message


Sujet :

API standards et tierces Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [Javamail] Insérer le contenu d'un fichier Excel dans le corps du message
    Bonjour,

    Tout est dans le titre. J'aimerai savoir s'il est possible à partir d'un fichier Excel d'insérer son contenu dans le corps du mail en utilisant Javamail. Toute aide sera la bienvenue !

    Merci à tous d'avance.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Par "insérer dans le corps du message", je suppose que tu voudrais qu'on visualise le contenu du fichier Excel, et, ce sur un maximum de clients mail, sans avoir nécessairement Excel installé, ou sur un système qui ne peut même pas faire tourner Excel. En plus, il faut définir ce qu'est "voir" : voir un classeur, ou une feuille de calcul, une partie de feuille... Dans ce cadre, je ne vois qu'une solution : convertir le contenu à voir en un élément capable d'être inséré dans un mail (html), donc soit en html (soit en image). Pour convertir un fichier Excel en html, on peut utiliser l'API Apache POIFS et son ExcelToHtmlConverter.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    Par "insérer dans le corps du message", je suppose que tu voudrais qu'on visualise le contenu du fichier Excel, et, ce sur un maximum de clients mail, sans avoir nécessairement Excel installé, ou sur un système qui ne peut même pas faire tourner Excel. En plus, il faut définir ce qu'est "voir" : voir un classeur, ou une feuille de calcul, une partie de feuille... Dans ce cadre, je ne vois qu'une solution : convertir le contenu à voir en un élément capable d'être inséré dans un mail (html), donc soit en html (soit en image). Pour convertir un fichier Excel en html, on peut utiliser l'API Apache POIFS et son ExcelToHtmlConverter.
    Merci pour ta réponse rapide. Pour mon besoin tu as vu juste. J'aimerai qu'on puisse visualiser le contenu d'une seule feuille (dans son intégralité) Excel sans passer par les pièces jointes.
    Si je convertis mon fichier Excel en html, aurais-je le même rendu graphique (espacement, couleur, etc.) ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, pour les couleurs. Pour l'espacement, c'est moins satisfaisant. Mais je t'ai dis une bêtise : pour les xlsx, on ne peut pas utiliser ExcelToHtmlConverter (qui ne fonctionne que pour les Excel 97).

    C'est un peu plus sioux qu'avec les xls 97 : il y a plus de bibliothèques à charger (en particulier dom4j et xmlbeans).

    Voici un code exemple de principe :

    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
    public class TestClass {
     
    	public static void main(String[] args) {
    		try {
    			test();
    		} catch (  TransformerFactoryConfigurationError  
    				| IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public static void test() throws IOException {
     
    		try (InputStream is = new FileInputStream(new File("c:/temp/test.xlsx"))) {
     
    			XSSFWorkbook workbook = new XSSFWorkbook(is);
     
    			try (FileWriter fileWriter = new FileWriter(new File(
    					"c:/temp/testxls.html"))) {
    				ToHtml toHtml = ToHtml.create(workbook, fileWriter);
    				toHtml.setCompleteHTML(true);
    		                toHtml.printPage();
    			}
    		}
     
    	}
     
    }
    EDIT : en y regardant de plus près, ToHtml est une classe d'exemple, qu'il s'agit de modifier à sa sauce pour adapter le rendu à ton besoin.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ayant des fichiers xls j'ai utilisé ExcelToHtmlConverter. La conversion se passe bien et j'obtiens un fichier html. Par contre le rendu n'est pas satisfaisant..

    • La taille des lignes et des colonnes n'est pas respecté
    • La largeur du document non plus
    • La largeur des bordures non plus
    • Les lettres d'Excel A, B.. etc apparaissent


    Comment puis-je modifier ces paramètres ?
    Merci d'avance !

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Personne n'est inspiré ?

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu peux utiliser toHtml() aussi pour les Excel 97. Cela dit, tout ne fonctionnera pas directement exactement comme tu le veux : les deux sont des bases. ExcelToHtmlConverter a été écris i l y a longtemps et est plus rigide (toHtml est un exemple, ExcelToHtmlConverter est une classe de utilitaire).

    Ensuite, pour ne pas afficher les lignes et colonnes d'étiquettes, il y a 2 options désactivables par setOutputRowNumbers(false) et setOutputColumnHeaders(false).

    Ensuite pour la taille des colonnes et des lignes, ça fonctionne avec mon test (j'utilise Poifs 3.0.1). Je ne sais pas ce que tu appelles la largeur du document. Pour moi la largeur du document c'est la somme de la largeur de toutes les colonnes.

    Pour les épaisseurs de bordure, c'est plus problématique, parce que c'est une méthode static de AbstractExcelUtils qui est utilisé, et que son implémentation est inexacte. En plus, ExcelToHtmlConverter ne permet pas de sélectionner la feuille de calcul. Et affiche le nom de la feuille, ce qu'on ne veut pas forcément, etc.

    Je procéderais personnellement en reprenant le code de ExcelToHtmlConverter en l'adaptant (ce qu'on ferait avec l'exemple toHtml(), qui a des problèmes similaires - il se plante par exemple le style des bordures).

    Voici un exemple que j'ai fait pour tester :

    ExcelToHtmlConverter.java

    et le code pour l'exécuter :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    public class TestXls {
     
    	public static void main(String[] args) {
    		try {
    			test();
    		} catch (  TransformerException  
    				| IOException | ParserConfigurationException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public static void test() throws IOException, ParserConfigurationException, TransformerException {
     
    		ExcelToHtmlConverter.Configuration configuration = new ExcelToHtmlConverter.Configuration() {
     
    			@Override
    			public boolean includeSheet(int index) {
    				return index==0;
    			}
     
    		};
    		configuration.withTitle=false;
     
    		final HSSFWorkbook workbook = ExcelToHtmlUtils.loadXls( new File("c:/temp/test.xls") );
                    ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(
                    DocumentBuilderFactory.newInstance().newDocumentBuilder()
                            .newDocument() );
     
                   excelToHtmlConverter.setOutputRowNumbers(false);
                   excelToHtmlConverter.setOutputColumnHeaders(false);
     
                   excelToHtmlConverter.processWorkbook( workbook, configuration ); 
     
    		try (FileWriter fileWriter = new FileWriter("c:/temp/xls.html") ) {
     
    	           Transformer transformer = TransformerFactory.newInstance()
    	                .newTransformer();
    	           transformer.setOutputProperty( OutputKeys.ENCODING, "utf-8" );
    	           transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
    	           transformer.setOutputProperty( OutputKeys.METHOD, "html" );
    	           transformer.transform(
    	                new DOMSource( excelToHtmlConverter.getDocument() ),
    	                new StreamResult( fileWriter ) );
     
    		}
     
    	}
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [AC-2007] Insérer des données d'un fichier Excel dans et depuis Access
    Par Blado_sap dans le forum VBA Access
    Réponses: 9
    Dernier message: 25/01/2015, 18h57
  2. [AC-2007] Insérer le contenu d'un fichier Word dans un état
    Par Simplifi dans le forum IHM
    Réponses: 1
    Dernier message: 20/07/2012, 01h26
  3. Afficher le contenu d'un fichier excel dans un listbox
    Par Daemon80 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 22/06/2012, 13h38
  4. [MySQL] Insérer le contenu d'un fichier Excel dans une base de donnée Mysql
    Par ghir_ana dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/07/2011, 15h46
  5. Réponses: 4
    Dernier message: 11/07/2007, 18h40

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