такая штука у меня работает (в принципе взял с сайта pentaho.com) | Код | import java.io.File;
import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel;
import org.jfree.report.JFreeReport; import org.jfree.report.JFreeReportBoot; import org.jfree.report.modules.gui.base.PreviewDialog; import org.jfree.report.modules.parser.base.ReportGenerator; import org.jfree.ui.RefineryUtilities;
public class Launcher {
/** * Parses a report and displays a non-modal preview dialog. * * @param in the URL to the Report Definition XML file * @param data a valid tablemodel. */ public static void executeReport (File in, TableModel data) throws Exception { if (in == null) { throw new Exception("URL is invalid"); }
try { final ReportGenerator generator = ReportGenerator.getInstance(); JFreeReport report = generator.parseReport(in); report.setData (data);
final PreviewDialog frame = new PreviewDialog(report); frame.pack(); RefineryUtilities.positionFrameRandomly(frame); frame.setVisible(true); } catch(Exception e) { throw new Exception("Parsing failed", e); } } /** * @param args */ public static void main(String[] args) throws Exception{ // Booting initializes the library and all subsystems JFreeReportBoot.getInstance().start(); DefaultTableModel tm = new DefaultTableModel(); String[] ident = {"Location","Department","Employee","Salary"}; tm.setColumnIdentifiers(ident); Object[] data = {"Denver","Sales","John Doe",100.000}; tm.addRow(data); Object[] data2 = {"Denver","Sales","Jane Doe",100.000}; tm.addRow(data2); Object[] data3 = {"Denver","Marketing","Arthur Dent",125.000}; tm.addRow(data3); Object[] data4 = {"New York","Marketing","Adam Johnson",125.000}; tm.addRow(data4); Object[] data5 = {"New York","Marketing","Eve Lynn",145.000}; tm.addRow(data5); Object[] data6 = {"New York","Management","J.D. Salinger",500.000}; tm.addRow(data6); File f = new File("ttt.xml"); executeReport(f,tm); }
}
|
а вот собственно и сам отчет - файл ttt.xml (сгенерил в дизайнере): | Код | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE report-definition PUBLIC "-//JFreeReport//DTD report definition//EN//extended/version 0.8.5" "http://jfreereport.sourceforge.net/extreport-085.dtd"> <report-definition name="Report">
<parser-config> <object-factory class="org.jfree.xml.factory.objects.URLClassFactory"/> <object-factory class="org.jfree.report.modules.parser.ext.factory.objects.DefaultClassFactory"/> <object-factory class="org.jfree.report.modules.parser.ext.factory.objects.BandLayoutClassFactory"/> <object-factory class="org.jfree.xml.factory.objects.ArrayClassFactory"/> <element-factory class="org.jfree.report.modules.parser.ext.factory.elements.DefaultElementFactory"/> <stylekey-factory class="org.jfree.report.modules.parser.ext.factory.stylekey.DefaultStyleKeyFactory"/> <stylekey-factory class="org.jfree.report.modules.parser.ext.factory.stylekey.PageableLayoutStyleKeyFactory"/> <template-factory class="org.jfree.report.modules.parser.ext.factory.templates.DefaultTemplateCollection"/> <datasource-factory class="org.jfree.report.modules.parser.ext.factory.datasource.DefaultDataSourceFactory"/> </parser-config>
<report-config> <simple-page-definition width="1" height="1"> <page orientation="portrait" topmargin="20" leftmargin="20" bottommargin="20" rightmargin="20" pageformat="A4"/> </simple-page-definition> </report-config>
<report-description> <report-header> <style> <basic-key name="pagebreak-before">false</basic-key> <basic-key name="pagebreak-after">false</basic-key> <compound-key name="layoutmanager"> <basic-object name="class">org.jfree.report.layout.StaticLayoutManager</basic-object> </compound-key> </style> </report-header> <report-footer> <style> <basic-key name="pagebreak-before">false</basic-key> <basic-key name="pagebreak-after">false</basic-key> <compound-key name="layoutmanager"> <basic-object name="class">org.jfree.report.layout.StaticLayoutManager</basic-object> </compound-key> </style> </report-footer> <page-header> <style> <basic-key name="display-on-firstpage">true</basic-key> <basic-key name="display-on-lastpage">true</basic-key> <compound-key name="layoutmanager"> <basic-object name="class">org.jfree.report.layout.StaticLayoutManager</basic-object> </compound-key> </style> </page-header> <page-footer> <style> <basic-key name="display-on-firstpage">true</basic-key> <basic-key name="display-on-lastpage">true</basic-key> <compound-key name="layoutmanager"> <basic-object name="class">org.jfree.report.layout.StaticLayoutManager</basic-object> </compound-key> </style> </page-footer> <watermark> <style> <basic-key name="pagebreak-before">false</basic-key> <basic-key name="pagebreak-after">false</basic-key> <compound-key name="layoutmanager"> <basic-object name="class">org.jfree.report.layout.StaticLayoutManager</basic-object> </compound-key> </style> </watermark> <groups> </groups> <itemband> <style> <basic-key name="pagebreak-before">false</basic-key> <basic-key name="pagebreak-after">false</basic-key> <compound-key name="layoutmanager"> <basic-object name="class">org.jfree.report.layout.StaticLayoutManager</basic-object> </compound-key> </style> <element name="TextField@15208205" type="text/plain"> <style> <compound-key name="min-size"> <basic-object name="height">16.0</basic-object> <basic-object name="width">69.0</basic-object> </compound-key> <basic-key name="paint">black</basic-key> <basic-key name="font">dialog</basic-key> <basic-key name="font-size">12</basic-key> <basic-key name="line-height">0.0</basic-key> <basic-key name="font-bold">false</basic-key> <basic-key name="font-italic">false</basic-key> <basic-key name="font-underline">false</basic-key> <basic-key name="font-strikethrough">false</basic-key> <basic-key name="font-embedded">false</basic-key> <basic-key name="alignment">left</basic-key> <basic-key name="valignment">top</basic-key> <basic-key name="dynamic_height">false</basic-key> <basic-key name="reserved-literal">..</basic-key> <basic-key name="trim-text-content">true</basic-key> <basic-key name="Excel.WrapText">false</basic-key> <compound-key name="absolute_pos"> <basic-object name="x">17.0</basic-object> <basic-object name="y">13.0</basic-object> </compound-key> </style> <template references="string-field"> <basic-object name="field">Location</basic-object> <basic-object name="nullValue"></basic-object> </template> </element> <element name="TextField@33229819" type="text/plain"> <style> <compound-key name="min-size"> <basic-object name="height">16.0</basic-object> <basic-object name="width">75.0</basic-object> </compound-key> <basic-key name="paint">black</basic-key> <basic-key name="font">dialog</basic-key> <basic-key name="font-size">12</basic-key> <basic-key name="line-height">0.0</basic-key> <basic-key name="font-bold">false</basic-key> <basic-key name="font-italic">false</basic-key> <basic-key name="font-underline">false</basic-key> <basic-key name="font-strikethrough">false</basic-key> <basic-key name="font-embedded">false</basic-key> <basic-key name="alignment">left</basic-key> <basic-key name="valignment">top</basic-key> <basic-key name="dynamic_height">false</basic-key> <basic-key name="reserved-literal">..</basic-key> <basic-key name="trim-text-content">true</basic-key> <basic-key name="Excel.WrapText">false</basic-key> <compound-key name="absolute_pos"> <basic-object name="x">73.0</basic-object> <basic-object name="y">13.0</basic-object> </compound-key> </style> <template references="string-field"> <basic-object name="field">Department</basic-object> <basic-object name="nullValue"></basic-object> </template> </element> <element name="TextField@21130722" type="text/plain"> <style> <compound-key name="min-size"> <basic-object name="height">16.0</basic-object> <basic-object name="width">66.0</basic-object> </compound-key> <basic-key name="paint">black</basic-key> <basic-key name="font">dialog</basic-key> <basic-key name="font-size">12</basic-key> <basic-key name="line-height">0.0</basic-key> <basic-key name="font-bold">false</basic-key> <basic-key name="font-italic">false</basic-key> <basic-key name="font-underline">false</basic-key> <basic-key name="font-strikethrough">false</basic-key> <basic-key name="font-embedded">false</basic-key> <basic-key name="alignment">left</basic-key> <basic-key name="valignment">top</basic-key> <basic-key name="dynamic_height">false</basic-key> <basic-key name="reserved-literal">..</basic-key> <basic-key name="trim-text-content">true</basic-key> <basic-key name="Excel.WrapText">false</basic-key> <compound-key name="absolute_pos"> <basic-object name="x">157.0</basic-object> <basic-object name="y">12.0</basic-object> </compound-key> </style> <template references="string-field"> <basic-object name="field">Employee</basic-object> <basic-object name="nullValue"></basic-object> </template> </element> <element name="TextField@33073671" type="text/plain"> <style> <compound-key name="min-size"> <basic-object name="height">16.0</basic-object> <basic-object name="width">100.0</basic-object> </compound-key> <basic-key name="paint">black</basic-key> <basic-key name="font">dialog</basic-key> <basic-key name="font-size">12</basic-key> <basic-key name="line-height">0.0</basic-key> <basic-key name="font-bold">false</basic-key> <basic-key name="font-italic">false</basic-key> <basic-key name="font-underline">false</basic-key> <basic-key name="font-strikethrough">false</basic-key> <basic-key name="font-embedded">false</basic-key> <basic-key name="alignment">left</basic-key> <basic-key name="valignment">top</basic-key> <basic-key name="dynamic_height">false</basic-key> <basic-key name="reserved-literal">..</basic-key> <basic-key name="trim-text-content">true</basic-key> <basic-key name="Excel.WrapText">false</basic-key> <basic-key name="Excel.CellDataFormat"></basic-key> <compound-key name="absolute_pos"> <basic-object name="x">233.0</basic-object> <basic-object name="y">13.0</basic-object> </compound-key> </style> <template references="number-field"> <basic-object name="field">Salary</basic-object> <basic-object name="format">#,##0.###</basic-object> <basic-object name="nullValue"></basic-object> </template> </element> <element name="Element@13801408" type="shape/generic"> <style> <compound-key name="min-size" class="org.jfree.ui.FloatDimension"> <basic-object name="height">0.0</basic-object> <basic-object name="width">513.0</basic-object> </compound-key> <basic-key name="paint">black</basic-key> <compound-key name="stroke" class="java.awt.BasicStroke"> <basic-object name="value">1.0</basic-object> </compound-key> <basic-key name="scale">true</basic-key> <basic-key name="keepAspectRatio">false</basic-key> <basic-key name="dynamic_height">false</basic-key> <compound-key name="absolute_pos"> <basic-object name="x">17.0</basic-object> <basic-object name="y">28.0</basic-object> </compound-key> <basic-key name="fill-shape">false</basic-key> <basic-key name="draw-shape">true</basic-key> </style> <datasource type="StaticDataSource"> <compound-object name="value" class="java.awt.geom.Line2D$Double"> <basic-object name="x1">0.0</basic-object> <basic-object name="x2">513.0</basic-object> <basic-object name="y1">0.0</basic-object> <basic-object name="y2">0.0</basic-object> </compound-object> </datasource> </element> </itemband> </report-description> <functions> <property-ref name="report.date"/> </functions> </report-definition>
|
но все это работает только на jfr8 - на след. версии другие интерфейсы((
|