Bonjour,
Je découvre Ireport depuis peu, et j'avoue que j'ai du mal en ce qui concerne les sous rapport.
Voici comment j'ai procédé :
- J'ai créé un rapport nommé "files.jrxml" qui constitue mon futur sous rapport
- J'ai créé un rapport général "general.jrxml" qui inclu le sous rapport.
J'ai vu que le pb d'Ireport c'est qu'il n'inclut pas vraiment le sous rapport directement avec un chemin, mais avec une référence via un identifiant à lui. Donc j'ai remplacé le code xml du rapport général par ceci :
En précisant donc là ou se trouve mon sous rapport.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <subreport isUsingCache="true"> <reportElement x="1" y="27" width="534" height="30"/> <subreportExpression class="java.lang.String"><![CDATA[new String("C:\\Documents and Settings\\n_vi\\Bureau\\jasper report\\modifications\\files.jrxml")]]></subreportExpression> </subreport>
Le hic, donc, c'est que j'ai l'erreur suivante lorsque j'exécute mon programme java chargée de récupérer les infos et les distribuer dans le rapport général :
Voilà, je voulais donc savoir si certains d'entre vous savait d'où viens mon erreur.
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 net.sf.jasperreports.engine.JRException: Error loading object from file : C:\Program Files\eclipse\workspace\jasperTest\config\files.jrxml at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:92) at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLoader.java:257) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:303) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:274) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:400) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1273) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:614) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:209) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:109) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:751) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:679) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) at test.TestJasper.main(TestJasper.java:76) Caused by: java.io.StreamCorruptedException: invalid stream header at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:737) at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253) at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:87) ... 13 more
Je vous remercie pour votre soutien
EDIT :
Un peu plus d'info, voici mon main java :
L'erreur intervient sur la ligne en gras du code java.
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 static void main(String[] args) { try { JasperReport jasperReport = JasperCompileManager.compileReport("config/general.jrxml"); Map parameters = new HashMap(); parameters.put("ReportTitle", "FORMATTING REPORT DOCDB EXCHANGE IN XML"); parameters.put("DataFile", "DOCDB_XML_Formatting_Completeness.txt"); parameters.put("DateProduced", "20070203"); parameters.put("VolumeId", "EPDDEEP2007020806001001"); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRTableModelDataSource(new CustomTableModel())); JasperExportManager.exportReportToPdfFile(jasperPrint, "test.pdf"); } catch (JRException e) { e.printStackTrace(); System.exit(1); } catch (Exception e) { e.printStackTrace(); System.exit(1); } }
Partager