Итак JasperReports - мощная библиотека для создания отчетов.Информация на р;усском о том, что это такое, и примеры можно найти в записках искателей
О выборке данных из базы данных там хорошо написано, но вот появилась необходимость создать отчет с данными отображаемыми в JTable. Принципиально в этом нет ничего сложного: для этого служит класс JRTableModelDataSource. Параметром ему передается TableModel: mod = jTable1.getModel();
JRTableModelDataSource map = new JRTableModelDataSource(mod);
try {
JasperReport rep = JasperCompileManager.compileReport("MapReport.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(rep,new HashMap(),map);
JasperViewer.viewReport(jasperPrint);
}catch (JRException ex) {
ex.printStackTrace();
}
* This source code was highlighted with Source Code Highlighter.
В шаблоне же SQL запрос не пишется, необходимо только описать переменные, названия которых будут равны названиям соответствующих столцов таблицы. При этом важно, что бы реальный тип данных в столбце был таким же как и тип в описании переменной в шаблоне, в противном случае будет ошибка.
Простой шаблон, который отобразит данные:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report name" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<field name="name" class="java.lang.String"/>
<field name="zn" class="java.lang.String"/>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="194" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="230" y="0" width="325" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{zn}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
* This source code was highlighted with Source Code Highlighter.
0 коммент.:
Отправить комментарий