2016年2月15日月曜日

jasper でレポート作成(サブレポート)

■サブリポートを使用した帳票
1.メインデザイン
$ cat sample01.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<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="jasper_report_template" language="groovy" pageWidth="595"
pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20"
topMargin="20" bottomMargin="20">
  <field name="layout" class="java.lang.String" />
  <field name="subList" class="java.util.List" />
  <detail>
     <band height="23">
       <subreport>   
         <reportElement positionType="Float" x="0" y="3" width="300"
         height="20" isRemoveLineWhenBlank="true" backcolor="#99ccff"/>

         <dataSourceExpression>
           new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
           ($F{subList})
         </dataSourceExpression>
         <subreportExpression class="java.lang.String">
           <![CDATA[$F{layout}]]>
         </subreportExpression>
       </subreport>   
     </band>
  </detail>
</jasperReport>

2.サブデザイン1(サブレポート)
$ cat sample02.jrxml
<?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="jasper_report_template" language="groovy" pageWidth="595"
pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20"
topMargin="20" bottomMargin="20">
  <field name="pack" class="java.lang.String"/>
  <field name="apple" class="java.lang.String"/>
  <columnHeader>
    <band height="23">
      <staticText>
        <reportElement x="0" y="3" width="100" height="15" />
        <textElement textAlignment="Center" verticalAlignment="Middle">
          <font isBold="true" />
        </textElement>
        <text><![CDATA[PACK]]></text>
      </staticText>
      <staticText>
        <reportElement x="101" y="3" width="100" height="15" />
        <textElement textAlignment="Center" verticalAlignment="Middle">
          <font isBold="true" />
        </textElement>
        <text><![CDATA[APPLE]]></text>
      </staticText>
    </band>
  </columnHeader>
  <detail>
    <band height="23">
      <textField>
        <reportElement x="0" y="3" width="100" height="15" />
        <textElement textAlignment="Center" verticalAlignment="Middle">
          <font size="9" />
        </textElement>
        <textFieldExpression class="java.lang.String">
          <![CDATA[$F{pack}]]>
        </textFieldExpression>
      </textField>
      <textField>
        <reportElement x="101" y="3" width="100" height="15" />
        <textElement textAlignment="Center" verticalAlignment="Middle">
          <font size="9" />
        </textElement>
        <textFieldExpression class="java.lang.String">
          <![CDATA[$F{apple}]]>
        </textFieldExpression>
      </textField>
    </band>
  </detail>
</jasperReport>

3.サブデザイン2(サブレポート)
$ cat sample03.jrxml
<?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="jasper_report_template" language="groovy" pageWidth="595"
pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20"
topMargin="20" bottomMargin="20">
  <field name="pack" class="java.lang.String"/>
  <field name="apple" class="java.lang.String"/>
  <columnHeader>
    <band height="23">
      <staticText>
        <reportElement x="0" y="3" width="100" height="15" />
        <textElement textAlignment="Center" verticalAlignment="Middle">
          <font isBold="true" />
        </textElement>
        <text><![CDATA[PACK]]></text>
      </staticText>
      <staticText>
        <reportElement x="101" y="3" width="100" height="15" />
        <textElement textAlignment="Center" verticalAlignment="Middle">
          <font isBold="true" />
        </textElement>
        <text><![CDATA[APPLE]]></text>
      </staticText>
    </band>
  </columnHeader>
  <detail>
    <band height="23">
      <textField>
        <reportElement x="0" y="3" width="100" height="15" />
        <textElement textAlignment="Center" verticalAlignment="Middle">
          <font size="9" />
        </textElement>
        <textFieldExpression class="java.lang.String">
          <![CDATA[$F{pack}]]>
        </textFieldExpression>
      </textField>
      <textField>
        <reportElement x="101" y="3" width="100" height="15" />
        <textElement textAlignment="Center" verticalAlignment="Middle">
          <font size="9" />
        </textElement>
        <textFieldExpression class="java.lang.String">
          <![CDATA[$F{apple}]]>
        </textFieldExpression>
      </textField>
    </band>
  </detail>
</jasperReport>

4.メインbean
$ cat databean.java
import java.util.*;

public class databean {
  private String layout;
  private Listsublist;

  public void setLayout(String layout) { this.layout = layout; }
  public String getLayout() { return(layout); }

  public void setSubList(Listsublist) { this.sublist = sublist; } 
  public List getSubList() { return(sublist); } 
}

5.サブbean
$ cat subbean.java
public class subbean {
  private String pack;

  public void setPack(String pack) { this.pack = pack; }
  public String getPack() { return(pack); }
}

6.サブbean1
$ cat subbean1.java
public class subbean1 extends subbean {
  private String apple;

  public void setApple(String apple) { this.apple = apple; }
  public String getApple() { return(apple); }
}

7.サブbean2
$ cat subbean2.java
public class subbean2 extends subbean {
  private String orange;
  private String value;

  public void setOrange(String orange) { this.orange = orange; }
  public String getOrange() { return(orange); }

  public void setValue(String value) { this.value = value; }
  public String getValue() { return(value); }
}

8.メインプログラム
$ cat sample01.java
import java.util.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.*;

public class sample01 {

   public static void main(String[] args) {
      databeanlist data = new databeanlist();
      ArrayListdataList = data.getdatabeanlist();

      JRBeanCollectionDataSource beanColDataSource =
            new JRBeanCollectionDataSource(dataList);

      try {
         Map parameters = new HashMap();
         JasperFillManager.fillReportToFile("sample01.jasper",
            "sample01.jrprint",parameters, beanColDataSource);
      } catch (JRException e) {
         e.printStackTrace();
      }
      System.out.println("Done filling!!! ...");
   }
}

9.実行
$ ls
databean.java      jrc.class  sample01.java   sample02.jrxml  subbean.java   subbean2.java
databeanlist.java  jrc.java   sample01.jrxml  sample03.jrxml  subbean1.java

$ java jrc sample01.jrxml sample01.jasper
$ java jrc sample02.jrxml sample02.jasper
$ java jrc sample03.jrxml sample03.jasper
$ javac sample01.java
$ java sample01
$ ls
databean.class      jrc.java          sample01.jrxml   subbean.class   subbean2.java
databean.java       sample01.class    sample02.jasper  subbean.java
databeanlist.class  sample01.jasper   sample02.jrxml   subbean1.class
databeanlist.java   sample01.java     sample03.jasper  subbean1.java
jrc.class           sample01.jrprint  sample03.jrxml   subbean2.class

10.帳票確認
$ java net.sf.jasperreports.view.JasperViewer sample01.jrprint



jasper でレポート作成(帳票作成)

■帳票作成
1.bean
$ cat databean.java
public class databean {
  private String first_name ;

  public void setFirst_name(String name) { first_name = name; }
  public String getFirst_name() { return(first_name); }
}
2.bean生成
$ cat databean.java
public class databean {
  private String first_name ;

  public void setFirst_name(String name) { first_name = name; }
  public String getFirst_name() { return(first_name); }
}
3.帳票作成
import java.util.*;

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.*;

class sample01 {
   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      databeanlist db = new databeanlist();
      ArrayList dblist = db.getdatabeanlist();

      JRBeanCollectionDataSource beanColDataSource =
      new JRBeanCollectionDataSource(dblist);

      Map parameters = new HashMap();
      try {
         JasperFillManager.fillReportToFile(
         "sample01.jasper", "sample01.jrprint", parameters, beanColDataSource);
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}
4.コンパイル
$ javac sample01.java
$ ls
databean.class  databeanlist.class  jrc.class  sample01.class   sample01.java
databean.java   databeanlist.java   jrc.java   sample01.jasper  sample01.jrxml
5。実行(.jrprint作成)
$ java sample01
databean.class      databeanlist.java  sample01.class   sample01.jrprint
databean.java       jrc.class          sample01.jasper  sample01.jrxml
databeanlist.class  jrc.java           sample01.java
6。印刷イメージ確認
$ java net.sf.jasperreports.view.JasperViewer test01.jrprint

jasper でレポート作成(コンパイル済デザインの確認)

■コンパイル済デザインの確認
$ ls
jrc.class  jrc.java  sample01.jasper  sample01.jrxml

$ java net.sf.jasperreports.view.JasperDesignViewer sample01.jasper 



jasper でレポート作成(デザインコンパイル)

■デザインコンパイル
$ cat jrc.java
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;

class jrc {
  public static void main(String[] args) {
    if (args.length != 2) {
      System.out.printf("Usage : java jrc src.jrcxml dst.jasper\n");
      System.exit(1);
    }

    try {
      JasperCompileManager.compileReportToFile(args[0],args[1]);
    } catch (JRException e) {
      e.printStackTrace();
    }
    System.out.printf("Done compiling[%s]!! ...\n",args[0]);
   }
}


% javac jrc.java
% ls
jrc.java  sample01.jrxml

% java jrc sample.jrxml sample.jasper
% ls 
jrc.class  jrc.java  sample01.jasper  sample01.jrxml



jasper でレポート作成(デザイン確認)

■デザイン確認
$ cat sample01.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<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="jasper_report_template" language="groovy" pageWidth="595"
pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20"
topMargin="20" bottomMargin="20">
    <field name="first_name" class="java.lang.String" />
    <columnHeader>
     <band height="23">
 <staticText>
     <reportElement x="5" y="3" width="100" height="15" />
     <textElement textAlignment="Center"
         verticalAlignment="Middle"> <font isBold="true" />
     </textElement>
     <text><![CDATA[first_name]]></text>
 </staticText>
     </band>
    </columnHeader>
    <detail>
        <band height="16">
  <textField>
      <reportElement x="5" y="0" width="100" height="15" />
      <textElement textAlignment="Center"
          verticalAlignment="Middle">
   <font size="9" />
      </textElement>
      <textFieldExpression class="java.lang.String">
          <![CDATA[$F{first_name}]]>
  </textFieldExpression>
  </textField>
        </band>
    </detail>
</jasperReport>
java net.sf.jasperreports.view.JasperDesignViewer -XML sample01.jrxml





jasper でレポート作成(インストール)

■jasper環境構築
$ cd 展開ディレクトリ
$ /usr/bin/unzip ダウンロードディレクトリ/jasperreports-6.2.0-project.zip
$ cd jasperreports-6.2.0/
$ export DIR=`pwd`
$ export CLASSPATH="pwd/dist/jasperreports-6.2.0.jar:`find $PWD -name '*.jar' -print | sed 's/$/:/' | perl -pe '{chop;}'`"