JasperReports의 단일 차트에있는 여러 XY 라인

드루 빌 타커

저는 현재 Jaspersoft Studio 6.3.0 및 jasperreports-6.2.0.jar을 사용하여 Java 응용 프로그램에서 JasperReports의 보고서를 생성하고 있습니다.

JRBeanCollectionDataSource를 사용하여 여러 xy-line 차트 (단지 한 줄이 아닌)를 만들어야합니다.

List<Coordinates>한 줄에 대한 데이터 만 포함 된 단일 xy-data 목록으로 작업 하면 올바른 XY- 선 차트를 가지지 만 한 줄만 사용합니다. 하지만 차트에 여러 줄을 그려야하고 그릴 줄의 수는 동적입니다.

JasperReports에 대한 경험이 좋은 사람이 쉽게 해결할 수 있기를 바랍니다. JRBeanCollectionDataSource로 여러 xy-line 차트를 검색해 보았지만 모두 데이터베이스 쿼리를 사용하여 동일한 예제를 가지고 있습니다.

누구든지 재스퍼에 대한 좋은 읽기 자료를 제안 할 수 있습니까? 이것은 저에게 시작에 불과하기 때문입니다. 나중에는 재스퍼 보고서를 사용하여 문서를 생성해야하고 재스퍼에서 제공하는 대부분의 기능을 사용해야한다고 생각합니다. 테이블, 정적 데이터, 목차 등).

콩 클래스 :

public class Coordinates {

    public Coordinates(Number xCoordinate, Number yCoordinate) {
        super();
        this.xCoordinate = xCoordinate;
        this.yCoordinate = yCoordinate;
    }

    public Coordinates() {
    }

    private Number xCoordinate;
    private Number yCoordinate;

    public Number getxCoordinate() {
        return xCoordinate;
    }

    public void setxCoordinate(Number xCoordinate) {
        this.xCoordinate = xCoordinate;
    }

    public Number getyCoordinate() {
        return yCoordinate;
    }

    public void setyCoordinate(Number yCoordinate) {
        this.yCoordinate = yCoordinate;
    }

이것이 내가 보고서를 만드는 방법입니다.

List<List<Coordinates>> coordinatesList = new ArrayList<>();

여러 줄 데이터를 저장할 수 있습니다.

 JRBeanCollectionDataSource coordiantesListBean = new JRBeanCollectionDataSource(coordinatesList); 

            ClassLoader classloader = Thread.currentThread().getContextClassLoader();
            InputStream projectInputStream = classloader.getResourceAsStream("jasper/xyLineChart.jasper");

            Map<String, Object> parameters = new HashMap<String, Object>();
            parameters.put("XYChartDataSource", coordiantesListBean);

            try {
                JasperPrint jasperPrint = JasperFillManager.fillReport(projectInputStream, parameters,
                        new JREmptyDataSource());
                JasperExportManager.exportReportToPdfFile(jasperPrint,FILE_LOCATION);
            } catch (JRException e) {
                e.printStackTrace();
            }

여기 내 xyLineChart.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="test" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="f5d035d9-630a-476c-b3d1-32985d774cb3">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <subDataset name="XYdataset" uuid="276f43e3-9d6c-4df1-85cb-5ea8bef1c28c">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
        <parameter name="XYChartDataSource" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource">
            <parameterDescription><![CDATA[]]></parameterDescription>
        </parameter>
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="xCoordinate" class="java.lang.Number"/>
        <field name="yCoordinate" class="java.lang.Number"/>
    </subDataset>
    <parameter name="XYChartDataSource" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <summary>
        <band height="283" splitType="Stretch">
            <xyLineChart>
                <chart evaluationTime="Report">
                    <reportElement x="0" y="0" width="555" height="283" uuid="9c9ff114-81b4-433f-bf71-17e21ea1fd3e"/>
                    <chartTitle/>
                    <chartSubtitle/>
                    <chartLegend/>
                </chart>
                <xyDataset>
                    <dataset>
                        <datasetRun subDataset="XYdataset" uuid="a8b4a706-dfaf-4347-9410-3c7018fce5f2">
                            <dataSourceExpression><![CDATA[$P{XYChartDataSource}]]></dataSourceExpression>
                        </datasetRun>
                    </dataset>
                    <xySeries autoSort="true">
                        <seriesExpression><![CDATA["SERIES 1"]]></seriesExpression>
                        <xValueExpression><![CDATA[$F{xCoordinate}]]></xValueExpression>
                        <yValueExpression><![CDATA[$F{yCoordinate}]]></yValueExpression>
                    </xySeries>
                </xyDataset>
                <linePlot>
                    <plot/>
                    <categoryAxisFormat>
                        <axisFormat/>
                    </categoryAxisFormat>
                    <valueAxisFormat>
                        <axisFormat/>
                    </valueAxisFormat>
                </linePlot>
            </xyLineChart>
        </band>
    </summary>
</jasperReport>
드루 빌 타커

실제로 여러 줄은 JasperReports에서 여러 시리즈를 의미합니다.

그리고 그것을 해결하기 위해 각 시리즈에 대해 별도의 빈을 만들었습니다. 이것이 최선의 솔루션인지 확실하지 않지만 일종의 저에게 효과적이었습니다.

ClassLoader classloader = Thread.currentThread().getContextClassLoader();
        InputStream projectInputStream = classloader.getResourceAsStream("jasper/xyLineChart.jasper");


        Map<String, Object> parameters = new HashMap<String, Object>();

        for(int i = 0 ; i< coordinatesList.size() ; i++){
            coordiantesListBean = new JRBeanCollectionDataSource(coordinatesList.get(i));
            parameters.put("XYChartDataSource", coordiantesListBean);
        }

        try {
            JasperPrint jasperPrint = JasperFillManager.fillReport(projectInputStream, parameters,
                    new JREmptyDataSource());
            JasperExportManager.exportReportToPdfFile(jasperPrint,FILE_LOCATION);
        } catch (JRException e) {
            e.printStackTrace();
        }

BEAN 클래스에서 추가 시리즈 변수를 만들었습니다.

public class Coordinates {



    public Coordinates() {
    }

    public Coordinates(Number series, Number xCoordinate, Number yCoordinate) {
        super();
        this.series = series;
        this.xCoordinate = xCoordinate;
        this.yCoordinate = yCoordinate;
    }

    private Number series;
    private Number xCoordinate;
    private Number yCoordinate;

    /** getters & setters **/

}

xyLineChart.jrxml

여기에 새로운 Series 변수를 추가했습니다.
<![CDATA[$F{series}.doubleValue()]]>

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.3.0.final using JasperReports Library version 6.3.0  -->
<!-- 2016-07-22T09:37:19 -->
<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="test" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="f5d035d9-630a-476c-b3d1-32985d774cb3">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <subDataset name="XYdataset" uuid="276f43e3-9d6c-4df1-85cb-5ea8bef1c28c">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
        <parameter name="XYChartDataSource" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource">
            <parameterDescription><![CDATA[]]></parameterDescription>
        </parameter>
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="xCoordinate" class="java.lang.Double"/>
        <field name="yCoordinate" class="java.lang.Double"/>
        <field name="series" class="java.lang.Double"/>
    </subDataset>
    <parameter name="XYChartDataSource" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <summary>
        <band height="283" splitType="Stretch">
            <xyLineChart>
                <chart evaluationTime="Report">
                    <reportElement x="0" y="0" width="555" height="283" uuid="78aa19cc-8293-4bdd-b9af-5c429db047d2"/>
                    <chartTitle/>
                    <chartSubtitle/>
                    <chartLegend/>
                </chart>
                <xyDataset>
                    <dataset>
                        <datasetRun subDataset="XYdataset" uuid="d121d53d-5698-4914-953e-03df6bf2af6e">
                            <dataSourceExpression><![CDATA[$P{XYChartDataSource}]]></dataSourceExpression>
                        </datasetRun>
                    </dataset>
                    <xySeries autoSort="true">
                        <seriesExpression><![CDATA[$F{series}.doubleValue()]]></seriesExpression>
                        <xValueExpression><![CDATA[$F{xCoordinate}.doubleValue()]]></xValueExpression>
                        <yValueExpression><![CDATA[$F{yCoordinate}.doubleValue()]]></yValueExpression>
                    </xySeries>
                </xyDataset>
                <linePlot>
                    <plot/>
                    <categoryAxisFormat>
                        <axisFormat/>
                    </categoryAxisFormat>
                    <valueAxisFormat>
                        <axisFormat/>
                    </valueAxisFormat>
                </linePlot>
            </xyLineChart>
        </band>
    </summary>
</jasperReport>

산출:

여기에 이미지 설명 입력

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

단일 활동의 여러 인 텐트

분류에서Dev

파이프 라인의 여러 단계에서 단일 논리 앱 호출

분류에서Dev

SqlServer에서 여러 행의 단일 열을 여러 열이있는 단일 행으로 조인하는 방법

분류에서Dev

React Native-단일 차트에 여러 유형의 데이터를 여러 표현으로 추가 할 수있는 차트 라이브러리가 있습니까?

분류에서Dev

단일 라인에서 System.out.println 인쇄 값의 이유는 여러 번 호출

분류에서Dev

단일 열에있는 여러 셀의 이벤트

분류에서Dev

단일 클라이언트 (arrayList)의 여러 제품

분류에서Dev

Crystal Reports의 수량에 따라 단일 필드를 여러 번 인쇄하는 방법

분류에서Dev

VBA의 단일 워크 시트에 여러 차트 추가

분류에서Dev

OpenVZ : VM에 대한 단일 IP의 여러 하위 도메인

분류에서Dev

단일 차트의 여러 ChartArea에 대한 별도의 범례

분류에서Dev

패턴 사이의 sed 카운트 라인-여러 파일

분류에서Dev

단일 인쇄를 사용하여 별도의 줄에 여러 변수 인쇄

분류에서Dev

루아의 여러 테이블에 단일 스프라이트 저장

분류에서Dev

단일 파일에 DER 인코딩 형식의 여러 인증서

분류에서Dev

Eclipse-JasperReports 플러그인에 대한 .jrxml 파일의 구문 색상을 변경하는 방법

분류에서Dev

Pig : 단일 문에 여러 조인 문

분류에서Dev

파일에서 Gnuplot에 여러 xy 쌍 플로팅

분류에서Dev

파일에서 Gnuplot에 여러 xy 쌍 플로팅

분류에서Dev

단일 스트림의 여러 필터

분류에서Dev

MVC 라우팅-단일 컨트롤러 / 방법에 일치하는 여러 URL

분류에서Dev

단일 사용자 계정에 로그인하는 여러 PC의 여러 사람

분류에서Dev

코드 구조 : 여러 소스 파일이있는 I2C 라인의 여러 장치

분류에서Dev

단일 메인 루프가있는 여러 창에서 OptionMenu

분류에서Dev

여러 드라이브의 디렉토리와 단일 네트워크 공유

분류에서Dev

LLVM의 여러 어셈블리 파일에서 함수 인라인

분류에서Dev

조건에 따라 여러 행의 데이터를 단일 행으로

분류에서Dev

SAS : 여러 라인에서 여러 환자 진단

분류에서Dev

단일 폴더에있는 여러 위치의 SVN 콘텐츠

Related 관련 기사

  1. 1

    단일 활동의 여러 인 텐트

  2. 2

    파이프 라인의 여러 단계에서 단일 논리 앱 호출

  3. 3

    SqlServer에서 여러 행의 단일 열을 여러 열이있는 단일 행으로 조인하는 방법

  4. 4

    React Native-단일 차트에 여러 유형의 데이터를 여러 표현으로 추가 할 수있는 차트 라이브러리가 있습니까?

  5. 5

    단일 라인에서 System.out.println 인쇄 값의 이유는 여러 번 호출

  6. 6

    단일 열에있는 여러 셀의 이벤트

  7. 7

    단일 클라이언트 (arrayList)의 여러 제품

  8. 8

    Crystal Reports의 수량에 따라 단일 필드를 여러 번 인쇄하는 방법

  9. 9

    VBA의 단일 워크 시트에 여러 차트 추가

  10. 10

    OpenVZ : VM에 대한 단일 IP의 여러 하위 도메인

  11. 11

    단일 차트의 여러 ChartArea에 대한 별도의 범례

  12. 12

    패턴 사이의 sed 카운트 라인-여러 파일

  13. 13

    단일 인쇄를 사용하여 별도의 줄에 여러 변수 인쇄

  14. 14

    루아의 여러 테이블에 단일 스프라이트 저장

  15. 15

    단일 파일에 DER 인코딩 형식의 여러 인증서

  16. 16

    Eclipse-JasperReports 플러그인에 대한 .jrxml 파일의 구문 색상을 변경하는 방법

  17. 17

    Pig : 단일 문에 여러 조인 문

  18. 18

    파일에서 Gnuplot에 여러 xy 쌍 플로팅

  19. 19

    파일에서 Gnuplot에 여러 xy 쌍 플로팅

  20. 20

    단일 스트림의 여러 필터

  21. 21

    MVC 라우팅-단일 컨트롤러 / 방법에 일치하는 여러 URL

  22. 22

    단일 사용자 계정에 로그인하는 여러 PC의 여러 사람

  23. 23

    코드 구조 : 여러 소스 파일이있는 I2C 라인의 여러 장치

  24. 24

    단일 메인 루프가있는 여러 창에서 OptionMenu

  25. 25

    여러 드라이브의 디렉토리와 단일 네트워크 공유

  26. 26

    LLVM의 여러 어셈블리 파일에서 함수 인라인

  27. 27

    조건에 따라 여러 행의 데이터를 단일 행으로

  28. 28

    SAS : 여러 라인에서 여러 환자 진단

  29. 29

    단일 폴더에있는 여러 위치의 SVN 콘텐츠

뜨겁다태그

보관