Jasper 서식 PDF 출력 비망 메모 ~ 여러 목록에 의한 서식 출력 ~

11118 단어 자바JasperReports
위 기사 계속

이전의 서표 PDF 출력에서는, JRBeanCollectionDataSource 내용을 비망 메모로 남긴다.

기본적으로는 여기에 기재되어 있는 내용과 같다.

또, 코드의 실장예등은 대폭 생략하고 있으므로 세세한 것은 전회의 기사를 참조하는 것

Jasper 측 구현



1. 데이터 세트/파라미터 생성


Outline 에서 오른쪽 클릭을 선택하고 Create Dataset

  • Dataset name : 데이터 세트 이름 입력
  • Data Adapter : "New Data Adapter -Collection of JavaBeans"를 선택
  • Outline 위에서 만든 Dataset1 가 표시되므로 Dataset1Fields 를 마우스 오른쪽 버튼으로 클릭하고 Create Field 를 선택하여 필드를 만듭니다.
  • Field01
  • Name: name
  • Class : java.lang.String

  • Field02
  • Name: parameter
  • Class : java.lang.String


  • 그런 다음 Outline에서 Parameters를 선택하여 매개 변수를 추가합니다.

    설정 값은 다음과 같습니다.
  • Name: datasource1
  • Class : java.util.List

  • XML에서는 아래와 같은 설정이 된다.
    <!-- データセット定義 -->
    <subDataset name="Dataset1">
      <field name="name" class="java.lang.String"/>
      <field name="parameter" class="java.lang.String"/>
    </subDataset>
    
    <!-- パラメータ定義 -->
    <parameter name="datasource1" class="java.util.List"/>
    

    2. List 만들기


    Palette 로부터 List 를 선택해, 데이터 세트로서 방금 작성한 Dataset1 를 지정한다.



    Connection에서는 「Use a JRDatasource expression」을 선택해, 하기 설정을 지정한다.
    $P{datasource1} 에는 위에서 작성한 파라미터명을 지정하는 것.
    new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{datasource1})
    



    List fields에서 Dataset1의 필드를 선택합니다.



    List 작성 후, 아래 그림의 List 를 선택하면 리스트부의 편집 화면이 표시되는 문자 폭이나 폰트 등 세세한 설정을 실시한다.



    이상의 작업을 행한 경우, XML에서는 이하의 설정이 된다.
      <componentElement>
        <reportElement x="261" y="65" width="100" height="30" uuid="46944fc3-2ae0-4385-9dc2-8f347b76c260"/>
        <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
          <datasetRun subDataset="Dataset1" uuid="53aa30da-b1f7-4221-b76c-a72666e1a6f9">
            <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{datasource1})]]></dataSourceExpression>
          </datasetRun>
          <jr:listContents height="30" width="100">
            <textField>
              <reportElement x="0" y="0" width="50" height="30" uuid="ac884e55-7578-4e95-aea3-955a56ee00aa"/>
              <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
            <textField>
              <reportElement x="50" y="0" width="50" height="30" uuid="5e8b1136-3781-41e0-bfdc-7e32fed0e30c"/>
              <textFieldExpression><![CDATA[$F{parameter}]]></textFieldExpression>
            </textField>
          </jr:listContents>
        </jr:list>
      </componentElement>
    

    Java 측 구현



    새로운 리스트 항목으로서 하기 Entity 클래스를 준비한다.

    Entiry.java
    @Getter
    @Setter
    public class Entity{
    
        private String name;
    
        private String parameter;
    
    }
    

    서식 출력 처리로서 다음을 구현한다.
    //Entityクラスのリストを準備
    List<Entity> entityList= new ArrayList<>();
    Entity entity01 = new Entity();
    entity01.setName("Test User01");
    entity01.setParameter("Parameter01");
    entityList.add(entity01);
    
    Entity entity02 = new Entity();
    entity02.setName("Test User02");
    entity02.setParameter("Parameter02");
    entityList.add(entity02);
    
    //parameterMapの作成
    HashMap<String, Object> parameterMap = new HashMap<String, Object>();
    parameterMap.put("datasource1", entityList);
    
    //前回同様JasperFillManagerでparameterMapを渡す
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameterMap, jrBeanCollectionDataSource);
    JasperExportManager.exportReportToPdfFile(jasperPrint, "jasper.pdf");
    

    출력 결과



    이들 설정 후, PDF 출력을 실행 한 결과가 아래 그림입니다.

    좋은 웹페이지 즐겨찾기