2016-02-15 4 views
1

В настоящее время я работаю над созданием отчетов с использованием DynamicReports для моего проекта.Объявление динамических столбцов в DynamicReport

У меня было много проблем с этим, так как я впервые использовал эту функцию в java.

То, что я пытаюсь сделать, - это создать столбцы динамически. Я уже решил часть DynamicDataSource, но теперь я застрял в столбцах.

вот мой код:

public void raports(){ 
     DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); 
     int mColumns = model.getColumnCount(); 
     int mRows = model.getRowCount(); 
     String[] arrColumns = new String[mColumns]; 

     for(int i=0; i<mColumns; i++){ 
      arrColumns[i] = model.getColumnName(i); 
     } 

     DRDataSource dataSource = new DRDataSource(arrColumns); 

     for (int i = 0; i < mRows; i++) { 
      for (int j = 0; j<mColumns; j++){ 
       dataSource.add(model.getValueAt(i, j).toString()); 
      } 
     } 

     JasperReportBuilder report = DynamicReports.report();//a new report 
     StyleBuilder boldStyle = stl.style().bold(); 
     StyleBuilder titleStyle = stl.style(boldCenteredStyle) 
       .setVerticalAlignment(VerticalAlignment.MIDDLE) 
       .setFontSize(15); 

     StyleBuilder boldCenteredStyle = stl.style(boldStyle) 
       .setHorizontalAlignment(HorizontalAlignment.CENTER); 
     StyleBuilder columnTitleStyle = stl.style(boldCenteredStyle) 
       .setBorder(stl.pen1Point()) 
       .setBackgroundColor(Color.LIGHT_GRAY); 

     report 
       .setColumnTitleStyle(columnTitleStyle) 
       .highlightDetailEvenRows() 

       .columns(
//      Columns.column("Patient ID", "Patient_ID", DataTypes.stringType()).setHorizontalAlignment(HorizontalAlignment.LEFT), 
//      Columns.column("First Name", "First_Name", DataTypes.stringType()), 
//      Columns.column("Middle Name", "Middle_Name", DataTypes.stringType()), 
//      Columns.column("Last Name", "Last_Name", DataTypes.stringType()).setHorizontalAlignment(HorizontalAlignment.LEFT) 
       ) 


       .title(
        cmp.horizontalList() 
        .add(//cut the code here since this is the only part needed. 

Referrences: Dynamic Reports Documentation

Might have the right codes

ответ

0

Вы можете прервать цепочки вызовов для отчета и использовать следующий метод в цикле:

report.addColumn(Columns.column("Here will be the name", "Here is the corresponding arrColumns name", DynamicReports.type.integerType()/* here is the column type*/)); 

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^