如何在Table组件的帮助下显示JRBeanCollectionDataSource数据?

 hhqblog 发布于 2023-01-18 16:32

我需要在Table组件(JasperReports)中显示JRBeanCollectionDataSource数据.

这是我的模板,ShowPerson.jrxml文件:



    
    
    
    
    
        
            
        
        
        
    
    
    
        <band  splitType="Stretch">
            <staticText>
                <reportElement uuid="e96450a8-8358-4cae-a094-3add06d57de2" x="0" y="20"  />
                <textElement/>
                <text><![CDATA[Info]]></text>
            </staticText>
            <textField>
                <reportElement uuid="e21e9932-ebfe-4bb5-904d-ea99e141866b" x="56" y="20"  />
                <textElement/>
                <textFieldExpression><![CDATA[$P{INFO}]]></textFieldExpression>
            </textField>
        </band>
    
    
        
            
                
                
                    
                        
                            
                        
                        
                    
                    
                        
                            
                                
                                
                                
                            
                        
                        
                            
                                
                                
                                
                            
                        
                    
                    
                        
                            
                                
                                
                                
                            
                        
                        
                            
                                
                                
                                
                            
                        
                    
                
            
        
    

我的POJO:

public class Person {

    private String name;
    private int age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

建筑报告主要类:

public class OpenReport {
    public static void main(String[] args) throws JRException {
        Map peopleMap = new HashMap<>();
        peopleMap.put("Sisco", 17);
        peopleMap.put("Eve", 19);
        peopleMap.put("John", 20);
        peopleMap.put("George", 21);
        peopleMap.put("Steve", 18);

        ArrayList dataList = new ArrayList();

        for(Map.Entry personMap : peopleMap.entrySet()) {
            Person person = new Person();
            person.setName(personMap.getKey());
            person.setAge(Integer.valueOf(personMap.getValue().toString()));
            dataList.add(person);
        }

        JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList);
        Map parameters = new HashMap();
        parameters.put("INFO", "Hello");

        JasperReport report = (JasperReport) JRLoader.loadObject("src/test/ireport/ShowPerson.jasper");
        JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, beanColDataSource);

        JFrame frame = new JFrame("Report");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new JRViewer(jasperPrint));
        frame.pack();
        frame.setVisible(true);
    }
}

Laura.. 19

1.从服务器发送数据源作为参数,并使用不同的报告填充报告(可以为空).

JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList);
        Map parameters = new HashMap();
        parameters.put("INFO", "Hello");
        parameters.put("DS1", beanColDataSource);

        JasperReport report = (JasperReport) JRLoader.loadObject("src/test/ireport/ShowPerson.jasper");
        JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, new JREmptyDataSource());

2.在JRBeanCollectionDataSource类型的报告中删除一个新参数


3.设置TableDatasource以使用$ P {DS1}参数.


    
        
             
        
    
.....

4.Declare表数据集1中的字段(名称,年龄).

5.在表格中,在DetailBand中,在每列中添加一个带有相应字段的TextField(分别为$ F {name}和$ F {age}).

1 个回答
  • 1.从服务器发送数据源作为参数,并使用不同的报告填充报告(可以为空).

    JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList);
            Map parameters = new HashMap();
            parameters.put("INFO", "Hello");
            parameters.put("DS1", beanColDataSource);
    
            JasperReport report = (JasperReport) JRLoader.loadObject("src/test/ireport/ShowPerson.jasper");
            JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, new JREmptyDataSource());
    

    2.在JRBeanCollectionDataSource类型的报告中删除一个新参数

    <parameter name="DS1" class="net.sf.jasperreports.engine.JRBeanCollectionDataSource"/>
    

    3.设置TableDatasource以使用$ P {DS1}参数.

    <jr:table ...>
        <datasetRun subDataset="Table Dataset 1">
            <datasetParameter name="REPORT_DATA_SOURCE">
                 <datasetParameterExpression><![CDATA[$P{DS1}]]></datasetParameterExpression>
            </datasetParameter>
        </datasetRun>
    .....
    

    4.Declare表数据集1中的字段(名称,年龄).

    5.在表格中,在DetailBand中,在每列中添加一个带有相应字段的TextField(分别为$ F {name}和$ F {age}).

    2023-01-18 16:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有