java - 在 DynamicReport 中声明动态列

标签 java dynamic-columns dynamic-reports

我目前正在为我的项目使用 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.

引用资料: Dynamic Reports Documentation

Might have the right codes

最佳答案

您可以中断报告的调用链并在 for 循环中使用以下方法:

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

希望对您有所帮助。

关于java - 在 DynamicReport 中声明动态列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401082/

相关文章:

java - Angular 8 socket.io-client 2.2.0 和 Java netty-socket.io 消息未收到?

css - Bootstrap 4 表列大小未按预期响应

java - 设置horizo​​ntalAlignment没有完全右对齐PageXofYBuilder

java - DynamicReports 消除了日期字段的时间部分

java - Jasper 报告组件在 JavaFX Swing 节点中未正确呈现

java - 哪些 JVM 不支持直接 java.nio.ByteBuffer?

java - 已完成项目的百分比

java - 为什么 Hadoop 中的自定义数据类型会发生溢出失败

java - 如何获取 <p :column> in a facelet using EL 的嵌套组件

mysql - 按允许或阻止的值过滤 50k+ 行