Learner
Learner

Reputation: 73

DynamicJasper: 3 report sections in one page

I wanted to generate a report as this design:

2013                                           2012                       2011
                      NewCol1    NewCol2                  
Dept       Item      col1 col2 col3 col4       col1 col2 col3           col1 col2 col3

Area1
1          A         1    2     4     5         1    2    3              1    2    3 

1          A         1    2     4     5         1    2    3              1    2    3 

1          A         1    2     4     5         1    2    3              1    2    3   


Area2

1          A         1    2     4     5         1    2    3              1    2    3 

1          A         1    2     4     5         1    2    3              1    2    3 

1          A         1    2     4     5         1    2    3              1    2    3   

I used DynamicJasper and considered 2013, 2012 and 2011 as 3 different subreports and tried to generate it. But I get 2012 and 2011 data in different rows. Can someone please help me in designing the above layout using DynamicJasper? 2013, 2012 and 2011 are three different Titles in the same row.

public class LayoutDesigner
{
    public DynamicReport buildReportLayout(List<Mylist> list)
               /* List is the Java bean which contains all the data to be exported.*/

            throws ColumnBuilderException, ClassNotFoundException
    {
        int colIndex = 1;
        int colSpanSize;
        FastReportBuilder drb = new FastReportBuilder();

        AbstractColumn columnArea = ColumnBuilder.getNew()        
                            .setColumnProperty(ReportDetails.COLUMN_PROPERTY[0], String.class.getName()) /* ReportDetails conatins header and properties to be mapped.. */
                            .setFixedWidth(true)
                            .setTitle(ReportsDetails.COLUMN_PROPERTY[0]).setWidth(new Integer(100))
                            .build(); 
        AbstractColumn column1 = ColumnBuilder.getNew()        
                            .setColumnProperty(ReportDetails.COLUMN_PROPERTY[1], String.class.getName())
                            .setFixedWidth(true)
                            .setTitle(ReportsDetails.COLUMN_PROPERTY[1]).setWidth(new Integer(100))
                            .build();
                            ........../*  Defining other Abstrct Columns */

        GroupBuilder gb = new GroupBuilder();
        DJGroup djb = gb.setCriteriaColumn((PropertyColumn) columnArea)        

                        .addFooterVariable(column1,DJCalculation.SUM)
                        ........./*   added all essential variables */
                        .setGroupLayout(GroupLayout.VALUE_IN_HEADER)                       
                        .build(); 


        drb.addColumn(columnArea); 
        drb.addColumn(column1); 
        ...

        drb.addGroup(djb);

        /*  I grouped and now doing column span for clubbing col1 col2  under NewCol1. Also col1 col2 under NewCol2. This is also working.
         Problem here is I want one more layer of span to club NewCol1 and NewCol2 under 2013, but this is not working and I am not sure how to do.
         So I thought of 2 reports one containing 3 diferent columns (2013,2012 and 2011)  and another remaining data. But just with 3 different columns I cant show it, since without a column property, I cant define COlumns in a report..*/

        for (int i = 0; i < LAYOUT.length; i++)
        {
            if(ReportDetails.LAYOUT[i].equalsIgnoreCase(ReportDetails.LAYOUT[3]))
            {
                colSpanSize=2;
            }
            else
            {
                colSpanSize=1;
            }
            drb.setColspan(colIndex, colSpanSize,String.valueOf(ReportDetails.LAYOUT[i]));
            colIndex = colIndex + colSpanSize;
        }
        DynamicReport dr = drb.build();
        return  dr;
    }
}

Upvotes: 0

Views: 1002

Answers (1)

Ankur
Ankur

Reputation: 328

In order to design above what you can do is :

  1. Make a report Group based upon the Area
  2. Put the area heading in the Area Group Header
  3. The put all the other headers in the column header
  4. In the detail band place the Dept, Item and 3 subreports side by side

I have attached the screenshot also.

Design for the above requirement

Upvotes: 1

Related Questions