1

私は現在、自分のプロジェクトで DynamicReports を使用してレポートを作成しています。

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.

参考文献: 動的レポートのドキュメント

正しいコードがあるかもしれません

4

1 に答える 1

0

レポートの呼び出しチェーンを中断し、for ループで次のメソッドを使用できます。

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

お役に立てば幸いです。

于 2017-01-08T22:13:02.147 に答える