Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper
Jasper Forum d'entraide sur Jasper Reports. Avant de poster --> FAQ Jasper, Tutoriels Jasper
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/09/2006, 12h54   #1
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Par défaut Jasper : première tentative

Bonjour,
je débute avec Jasper comme avec Java et j'essaye désespéremment de faire un 1er exemple.

Voici mon code source :
Code :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.io.*;
 
// import des classes "Map" et "Hastable" pour l'envoi de paramètres à un rapport
import java.util.Map;
import java.util.Hashtable;
import java.util.HashMap;
 
// import du "moteur" de la librairie JasperReports
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.data.JRCsvDataSource;
 
/*import net.sf.jasperreports.view.JasperViewer;*/
 
 
public class generatepdffromcsv
{
	public static void main(String[] arguments)
	{
		String erreur = "";
		Map params = new Hashtable();
 
		try
		{
			System.out.println("Et c'est parti...");
 
			// ?????
			params.put("animal", "animal");
			params.put("mange", "mange");
			params.put("couleur", "couleur");
 
			// Chargement et compilation du rapport
			JasperDesign jasperDesign = JRXmlLoader.load("essai1.jrxml");
			JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
 
			// déclaration de la source de données
			File sourceFile = new File("essai1.csv");
			JRCsvDataSource source = new JRCsvDataSource(sourceFile);
System.out.println("aaaa");
			// ???? source.setFieldDelimiter(";");
			// ???? source.setUseFirstRowAsHeader(TRUE);
			// export du rapport au format temporaire 'jasperPrint'
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,params,source);
System.out.println("cccc");
 
 
			// puis export du rapport au format PDF
			JasperExportManager exporter = new JasperExportManager();
			exporter.exportReportToPdfFile(jasperPrint,"essai1.pdf");
 
			/*JasperViewer.viewReport(jasperPrint,false);*/
 
			System.out.println("That's all folks !");
		}
		catch (Exception e)
		{
			System.out.println(e.getMessage());
		}
	}
}
Mon fichier CSV :
Code :
1
2
3
4
animal;mange;couleur;
sanglier;glands;beige;
vache;herbe;blanche;
chat;souris;gris;
(j'ai aussi essayé en remplaçant les ";" par des "," puisque le setFieldDelimiter ne compile pas mais ça ne change rien)

J'ai généré le jrxml à partir de iReports :
Code :
1
2
3
4
5
...
	<field name="animal" class="java.lang.String"/>
	<field name="mange" class="java.lang.String"/>
	<field name="couleur" class="java.lang.String"/>
...
Et voilà ce que ça donne :
Code :
1
2
3
Et c'est parti...
aaaa
null


Une âme charitable peut-elle me dire ce qui ne va pas ?
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2006, 15h06   #2
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Par défaut c'est déjà ça

Pour le setFieldDelimiter j'ai trouvé : il faut mettre des "simples cotes".
Code :
source.setFieldDelimiter(';');
Quant aux booléens, apparemment ils s'écrivent en minsucules en Java.

Enfin bon, ça ne résoud rien du tout. Qu'est-ce que c'est que ce null qu'il me sort ?
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 14h49   #3
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Par défaut ou un exemple ?

Sinon quelqu'un a-t-il un jour réussi à importer un fichier CSV ?
Si oui, une copie du code m'intéresse, j'arriverai peut-être à trouver ce qui ne va pas.
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 10h01   #4
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Par défaut Un exemple qui fonctionne !

Bon, je me réponds à moi-même, je vous donne un exemple qui fonctionne enfin (contrairement à tous ceux qu'on trouve sur le net !) après avoir bien galéré sur des petits détails qui bloquaient tout, en particulier à cause de fonctions redéfinies sans compatibilité :

Code :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Exemple de génération de rapport JasperReports à partir d'une source CSV
// (validé avec jasperreports-1.2.6.jar - LY 09/2006)
 
//
// Exemple de fichier CSV utilisé en entrée :
// => ne pas oublier le caractère séparateur en fin de ligne !
//
// 	animal;mange;couleur;
// 	sanglier;glands;beige;
// 	vache;herbe;blanche;
// 	chat;souris;gris;
//
 
import java.io.*;
 
// import de la classe "HashMap" pour l'envoi de paramètres à un rapport
import java.util.HashMap;
 
// import du moteur de la librairie JasperReports
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRCsvDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.design.JRDesignField;
//import net.sf.jasperreports.engine.export.JRCsvExporter;
//import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
 
public class generatepdffromcsv
{
	public static void main(String[] args)
	{
		HashMap params = new HashMap();
		//String[] nomCols = {"animal", "mange", "couleur"};	// <- si on n'utilise pas 'setUseFirstRowAsHeader' **
 
		try
		{
 
			System.out.println("Et c'est parti...");
 
			// Passage de paramètres (facultatif)
			//params.put("", "");
 
			// Chargement et compilation du rapport
			System.out.print("+ chargement et compilation du rapport JRXML");
			JasperDesign jasperDesign = JRXmlLoader.load("essai11.jrxml");
			JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
			System.out.println(" : OK");
 
			// Déclaration de la source de données
			System.out.print("+ déclaration de la source de données CSV");
			File sourceFile = new File("essai1.csv");
			JRCsvDataSource source = new JRCsvDataSource(sourceFile);
			source.setFieldDelimiter(';');
			//source.setColumnNames(nomCols);	// <- si on n'utilise pas 'setUseFirstRowAsHeader' **
			source.setUseFirstRowAsHeader(true);
			System.out.println(" : OK");
 
			// Export du rapport au format temporaire 'jasperPrint'
			System.out.print("+ export du rapport au format intermédiaire 'jasperPrint'");
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, source);
			//équivalent à JasperPrint jasperPrint = JasperFillManager.fillReport("essai1.jasper", params, source);
			System.out.println(" : OK");
 
 
			// puis export du rapport au format cible
			JasperExportManager exporter = new JasperExportManager();
 
			System.out.print("+ conversion au format cible PDF");
			exporter.exportReportToPdfFile(jasperPrint, "essai1.pdf");
			System.out.println(" : OK");
 
			System.out.print("+ conversion au format cible HTML");
			exporter.exportReportToHtmlFile(jasperPrint, "essai1.html");
			System.out.println(" : OK");
 
			System.out.print("+ conversion au format cible XML");
			exporter.exportReportToXmlFile(jasperPrint, "essai1.xml", false);
			System.out.println(" : OK");
 
			System.out.println("That's all folks !");
		}
		catch (Exception e)
		{
			System.out.println(e.getMessage());
		}
	}
}
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2006, 16h05   #5
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Au fait, pas besoin de caractère séparateur en fin de ligne : il suffit de rajouter
Code :
1
2
3
4
5
private static final String CTE_S_CRLF_UNIX = "\n";//retour à la ligne Unix
private static final String CTE_S_CRLF_DOS = "\r\n";	//retour à la ligne Dos/Windows
private static final String CTE_S_CRLF_MAC = "\r";	//retour à la ligne Mac
 
source.setRecordDelimiter(sCRLF);
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2009, 17h47   #6
Invité de passage
 
Inscription : juillet 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 8
Points : 2
Points : 2
Par défaut Merci

Merci infiniment, sans vous j'aurais vraiment trimer !

Il n'y a pas beaucoup de doc pour JasperReport
cyberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2009, 18h40   #7
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Je râle assez quand des gens vient poser des questions sur des forums et ne reviennent jamais donner la solution.

Je suis heureux que ça ait servi à quelqu'un.
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2009, 09h47   #8
Rédacteur/Modérateur
 
Avatar de JauB
 
Homme Faisel
Ingénieur COBOL/AS400
Inscription : octobre 2005
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Faisel
Âge : 31
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur COBOL/AS400
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 713
Points : 2 712
Points : 2 712
Envoyer un message via AIM à JauB Envoyer un message via MSN à JauB Envoyer un message via Yahoo à JauB
Citation:
Envoyé par Peanut Voir le message
Je râle assez quand des gens vient poser des questions sur des forums et ne reviennent jamais donner la solution.

Je suis heureux que ça ait servi à quelqu'un.
ça te dit d'ajouter ce que tu viens de découvrir ici pour enrichir la FAQ Jasper/iReport?
Merci
__________________
*** Ingénieur COBOL/AS400 ***

-------------------------------------------------------------------

Mes articles, Mon Blog

Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----

JauB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2009, 10h02   #9
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Par défaut futur antérieur

Oui, je peux copier dans la FAQ l'exemple fonctionnel que je viens d'écrire... il y a un an et demi.
Je m'en occupe quand j'ai 5 min.
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h49.


 
 
 
 
Partenaires

Hébergement Web