2013-06-20 3 views
1

iReport/JasperReports를 사용하여 XML 파일 내에 CSV 필드를 그릴 수 있습니까? XML을 데이터 소스로 사용하여 CSV 필드에서 데이터 세트를 만듭니다.

나는 XML 파일을 가지고, 그 필드 중 하나는 다음과 같은 :

<values>48,59,59,58,53,53,52,55,50,52,54,56,57,59,60,57,56,55,58,62</values> 

어떻게 숫자는 플롯을 만들 것을 사용할 수 있습니까? 또는 어떻게 그 숫자를 사용하여 플롯에서 사용할 수있는 서브 데이터 세트를 만들 수 있습니까?


UPDATE : 나는 문자열의 배열을 가지고 있지만 여전히를 찾을 수 없습니다 그래서 지금

<variableExpression><![CDATA[$F{values}.split(",")]]></variableExpression> 

: 나는 다음과 같은 변수 표현식, 문자열 [] 변수를 만들었습니다 그것을 음모를 꾸미는 방법. 어떤 아이디어? building a Chart with an Array


UPDATE2이 : 이제 문자열 [] Arrays.asList($F{values}.split(","))으로 목록으로 변환 된
또한이 문제를 가지고이 사람은, 아무도 그에게 대답하지 않습니다. 하지만 내가 차트 계열로 분류 표현으로 사용할 수 모르겠어요 : 당신의 CSV 값을 처리하고 플롯이 데이터 소스에 하위 보고서를 사용하는 자신의위한 JRDataSource를 구현

enter image description here

+0

[데이터 소스없이 JRXML의 JasperReports 데이터 임베드] (0120-555-503) 게시물 –

+0

감사합니다 @AlexK하지만 정적 데이터는 원하지 않습니다. 데이터는 동적이며 기본 데이터 소스로 사용하는 XML 파일 (JRXML 파일 아님) 안에 있습니다. – TheBronx

답변

0

@josefprochazka가 지적했듯이 솔루션은 맞춤 데이터 소스를 만들어 하위 보고서로 전달하는 것이 었습니다. 하지만 저는 JasperReports 전문가가 아니며 사용자 정의 데이터 소스를 만드는 것은 당분간 필요했습니다. 그래서 코드 & 자습서와 함께 해결책입니다. 당신은 implements JRDataSource (이 사용자 정의 데이터 소스 예정)

  • 자바 프로젝트 및/또는 iReport로
  • 에 그 항아리를 추가하는 클래스를 포함하는 *의 .JAR을 만들 필요가

    1. : 나는 3 단계를 나눕니다 의 iReport에서
    2. 는/사용자 정의 데이터 소스의 인스턴스를 생성하고 당신이 그것을 할 방법을 알고 그래서 일단, 첫 번째 단계가 어렵지 않다 당신의 하위 보고서

    에 전달 jrxml. 다음 자습서를 사용했습니다. http://community.jaspersoft.com/wiki/building-custom-datasource-yahoo-finance-data
    기본적으로 수행해야 할 작업은 getFieldValue(JRField f)next() 두 가지 방법을 구현하는 것입니다. 다음은 3 개의 필드를 사용하는 완전한 예입니다. http://pastebin.com/jX0wJVGi
    클래스를 완성했으면 .jar 파일을 만들어 프로젝트 클래스 경로에 추가하십시오. iReport에서 도구 -> 옵션으로 이동하여 "Classpath"탭을 선택하고 거기에 jar 파일을 추가하십시오.
    Eclipse에서도 JasperReports를 사용하고있는 경우와 같습니다.

    마지막으로 우리는 보고서에 우리의 사용자 정의 DS를 인스턴스화하려고 :

    <subreport> 
        <reportElement uuid="52f64c56-b410-45a7-b391-828ef35e0103" positionType="Float" x="0" y="245" width="555" height="32"/> 
        <dataSourceExpression><![CDATA[new com.dbelectronics.BandasCSVDatasource($F{csv_field1},$F{csv_field2})]]></dataSourceExpression> 
        <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "your_subreport.jasper"]]></subreportExpression> 
    </subreport> 
    

    당신은 내가 BandasCSVDatasource이와 매개 변수를 호출 한 혼수 상태로 구분하여 20 개 숫자 문자열을 포함하는 각 하나를 볼 수 있듯이.

    그럼, 이제 당신은 필드를 하위 보고서를 작성하고지도해야한다 :

    <queryString> 
        <![CDATA[]]> 
    </queryString> 
    <field name="Verificacion" class="java.lang.String"/> 
    <field name="Calibracion" class="java.lang.String"/> 
    <field name="Banda" class="java.lang.String"/> 
    

    그런 다음 차트를 추가하고이 필드를 사용 example chart series

    는 도움이되기를 바랍니다. Josef에게 다시 한 번 감사드립니다.

    1

    <dataSourceExpression><![CDATA[new YourDataSource(${$F{values}})]></dataSourceExpression> 
    
    +0

    정말 간단한 문제에 대한 간단한 해결책이없는 것 같아요 ... 당신이 말한대로 맞춤 데이터 소스를 사용해 보겠습니다, 감사합니다! – TheBronx

    관련 문제