`
阅读更多

jasperReport支持多种格式的数据源,CSV(Comma Separated values),是一种用来存储数据的纯文本,文件格式,通常用于电子表格或数据库软件。

规则

0 开头是不留空,以行为单位。
1 可含或不含列名,含列名则居文件第一行。
2 一行数据不垮行,无空行。
3 以半角符号,作分隔符,列为空也要表达其存在。
4 列内容如存在,,则用“”包含起来。
5 列内容如存在“”则用“”“”包含。
6 文件读写时引号,逗号操作规则互逆。
7 内码格式不限,可为ASCII、Unicode或者其他。

jasper文件和前面几篇用到的是一样的(person.jasper),准备数据的文本文件Person.txt其中文件的格式对应模板文件的字段【 "pid", "name", "sex", "age", "password", "department"】。

"20000000001","bulktree1","man","21","1111111111","pcisv61"
"20000000002","bulktree2","man","22","2222222222","pcisv62"
"20000000003","bulktree3","man","23","3333333333","pcisv63"
"20000000004","bulktree4","man","24","4444444444","pcisv64"
"20000000005","bulktree5","man","25","5555555555","pcisv65"
"20000000006","bulktree6","man","26","6666666666","pcisv66"
"20000000007","bulktree7","man","27","7777777777","pcisv67"
"20000000008","bulktree8","man","28","8888888888","pcisv68"
"20000000009","bulktree9","man","29","9999999999","pcisv69"
下来我们看看jasperReport的API是怎么识别这些数据的,但是做这个之前我们还要指定数据到底是怎么对应的,定义String类型数组存放模板对应的列名和文本数据对应
String[] columNames = new String[] "pid""name""sex""age""password",
                
"department" }
;
识别这些数据并不难,下面这一句就可以搞定:
JRCsvDataSource jrcsvDataScource = new JRCsvDataSource(JRLoader
                .getLocationInputStream(
"D:\\workspace\\Person.txt"));
我们怎么才能让它识别对应的列呢?查看API看看对应的set方法吧!
// set record delimiter
        jrcsvDataScource.setRecordDelimiter("\r\n");
        
// set columnName
        jrcsvDataScource.setColumnNames(columNames);
至此数据源就准备完了,jasperReport封装了底层的实现,简单吧!下来看看完整的代码:
package org.bulktree.ireport.csvdata;

import java.util.HashMap;

import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRCsvDataSource;
import net.sf.jasperreports.engine.util.JRLoader;

import org.bulktree.ireport.ViewReport;

public class CSVDataSource {
    
    
public static void main(String[] args) {
        
try {
            
new CSVDataSource().reportView();
        }
 catch (Exception e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


    
private void reportView() throws Exception {
        JasperReport jasperReport 
= (JasperReport) JRLoader
                .loadObject(
"D:\\workspace\\Person.jasper");

        JasperPrint jasperPrint 
= JasperFillManager.fillReport(jasperReport,
                getReportParameter(), getDateSource());
        
        
new ViewReport().viewer(jasperPrint);
    }


    
private HashMap getReportParameter() {
        HashMap parameters 
= new HashMap();
        parameters.put(
"reportTitle""laoshulin");
        
return parameters;
    }


    
private JRCsvDataSource getDateSource() throws Exception {
        String[] columNames 
= new String[] "pid""name""sex""age""password",
                
"department" }
;
        
// get csvdata
        JRCsvDataSource jrcsvDataScource = new JRCsvDataSource(JRLoader
                .getLocationInputStream(
"D:\\workspace\\test\\src\\org\\bulktree\\ireport\\csvdata\\Person.txt"));
        
// set record delimiter
        jrcsvDataScource.setRecordDelimiter("\r\n");
        
// set columnName
        jrcsvDataScource.setColumnNames(columNames);

        
return jrcsvDataScource;
    }

}

还是这样的效果吧!^_^



        至于XML数据源也是很简单,通过读取xml文件获得数据
Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(xmlFileName));
不同的是document会作为一个参数传递给报表,fillReport方法就不会出现第三个参数,完整代码如下:
package org.bulktree.ireport.xmldata;

import java.util.HashMap;
import java.util.Locale;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.query.JRXPathQueryExecuterFactory;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.util.JRXmlUtils;

import org.bulktree.ireport.ViewReport;
import org.w3c.dom.Document;

public class XMLDataSource {

    
private static final String JASPER_FILE_NAME = "D:\\workspace\\Person.jasper";
    
private static final String XML_FILE_NAME = "D:\\workspace\\person.xml";

    
private void viewerReport() throws JRException {
        JasperReport jasperReport 
= (JasperReport) JRLoader.loadObject(JASPER_FILE_NAME);

        JasperPrint jasperPrint 
= JasperFillManager.fillReport(jasperReport,
                getReportParameter(XML_FILE_NAME));

        
new ViewReport().viewer(jasperPrint);
    }


    
private HashMap getReportParameter(String xmlFileName) {
        HashMap parameters 
= new HashMap();
        
try {
            parameters.put(
"reportTitle""laoshulin");
            Document document 
= JRXmlUtils.parse(JRLoader.getLocationInputStream(xmlFileName));

            parameters.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT,
                    document);
            parameters.put(JRXPathQueryExecuterFactory.XML_DATE_PATTERN, 
"yyyy-MM-dd");
            parameters.put(JRXPathQueryExecuterFactory.XML_NUMBER_PATTERN, 
"#,##0.##");
            parameters.put(JRXPathQueryExecuterFactory.XML_LOCALE, Locale.CHINESE);
            parameters.put(JRParameter.REPORT_LOCALE, Locale.CHINA);

        }
 catch (JRException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }


        
return parameters;
    }


    
public static void main(String[] args) throws Exception {
        
new XMLDataSource().viewerReport();
    }

}

        预览效果就不看了吧!哈哈 都是一样的道理,现在看看jasperReport的API有多强大了吧!

分享到:
评论
1 楼 tiancaishan 2014-03-24  
这只是最简单的主数据源,那子数据源怎么设置呢?

相关推荐

    ireport+jasperreport联合开发java报表(PDF).rar

    4. **数据源配置**:了解如何配置不同类型的数据源,如JDBC连接、CSV文件、XML数据等。 5. **jasperreport API**:学习Java API的使用,包括 JasperFillManager、JasperExportManager 和 JasperPrint 等类,用以...

    ireport+jasperreport API

    1. 数据源设置:ireport支持多种数据源,包括JDBC、XML、CSV等,使报表可以连接各种数据库获取数据。 2. 报表设计:掌握表格、图表、文本框等元素的使用,以及样式和样式的自定义,能构建出丰富的报表界面。 3. 导出...

    ireport+jasperReport+Swing总结.doc

    - **数据源支持**:jasperReport 支持多种类型的数据源,包括 XML、XLS、JavaBeans、SQL 等。 - **导出格式**:可以将报表导出为 PDF、HTML、CSV、XML 等多种格式。 **2. 必需的 jar 包** 对于 jasperReport 4.5.0...

    iReport+JasperReport教材两本以及demo

    iReport支持多种数据源,如数据库连接、CSV文件、XML数据等,可以方便地进行数据绑定和查询。此外,它还提供了丰富的样式和格式设置选项,使你可以定制出美观且信息丰富的报表。 JasperReport则是报表引擎,它负责...

    报表制作的详细流程(iReport+jasperReports)

    JasperReport 提供了丰富的报表元素,如表格、图表、文本框等,并支持多种数据源,包括数据库连接、CSV文件、XML数据等。通过JasperReport,开发人员可以创建静态报表,也可以生成动态的、交互式的报表。 ### ...

    ireport+jasperreport

    它能够处理各种数据源,包括关系型数据库、CSV文件、XML数据等。JasperReports支持多种输出格式,如PDF、HTML、Excel、CSV和XML。报表可以嵌入到Java应用程序、Web应用或者独立运行。 在"ireport+jasperreport一个...

    jasperreport+ireport创建javaBean多数据源报表

    通过以上步骤,你可以利用jasperreport和ireport创建一个基于JavaBean的多数据源报表。这种能力使开发者能更灵活地处理复杂的业务数据,生成满足需求的定制化报表。同时,jasperreport的开放源码特性使其成为许多...

    iReport与JasperReport简介

    iReport支持多种数据源,包括数据库连接、CSV文件、XML数据等,使得报表设计变得更加灵活。 **三、iReport的关键特性** 1. **WYSIWYG编辑器**:iReport提供所见即所得的编辑环境,使得设计报表如同操作Word一样简单...

    JasperReport+ireport实现报表导出功能

    - **支持多种数据源**:可以连接到数据库、XML文件、JavaBeans等多种数据源。 在实际开发中,JasperReport和iReport的组合使用可以帮助开发者高效地实现报表的生成和导出功能,而且由于其开源性质,可以自由定制和...

    ireport3中文用户手册+jasperreport 开发详细手册合集

    【JasperReport】是Apache软件基金会的一个项目,它提供了一个强大的报告引擎,能够处理各种数据源,如数据库、CSV文件、XML数据等,生成静态或交互式的HTML、PDF、Excel、CSV等多种格式的报表。JasperReport ...

    ireport+jsp基于jasperReport 实现导出报表至web页面

    它允许开发者通过直观的用户界面,使用拖放功能设计复杂的报表模板,支持多种数据源,如数据库、XML、CSV等。在设计报表时,.jrxml 文件是保存模板的XML格式文件,其中`language`属性通常设置为`Java`,因为...

    iReport 和 Jasperreport整合开发web报表向1.doc

    Jasperreport 的优势在于其灵活的数据绑定机制,可以支持多种数据源,包括 JDBC、CSV、XML 等。通过使用表达式和变量,开发者可以在报表中实现复杂的计算和逻辑操作。 iReport 的配置相对简单,只需设置JAVA_HOME和...

    iReport 和 Jasperreport整合开发web报表向导

    在iReport中可以创建JDBC数据源或自定义数据源。 3. **编译报表**:设计完成后,将iReport中的报表保存为JRXML文件,然后使用JasperCompileManager类编译成JasperReport对象。 4. **填充报表**:在运行时,通过...

    Ireport+oracle连接包安装资源

    它是用于创建和编辑JasperReports的图形化界面工具,支持多种数据源,包括数据库、CSV文件、XML数据等。通过Ireport,用户可以设计各种类型的报表,如表格、图表、文本、图像等,并能够进行样式和布局的定制。版本...

    CSDN技术中心 iReport 和 Jasperreport整合开发web报表向导.pdf

    - **数据绑定**:iReport支持多种数据源的绑定,如数据库、XML文件、CSV文件等。通过简单的配置,即可实现数据的自动填充。 - **报表预览与调试**:iReport内置了预览功能,可以在设计阶段实时查看报表效果。这对于...

    java报表(jasperreport_ireport+struts2)

    JasperReport是一个开源的Java报表库,它提供了丰富的报告设计功能,支持多种数据源,如数据库、CSV文件等。JasperReport的核心在于它的模板引擎,允许开发者通过设计XML或JRXML格式的报表模板来定义报告的布局和...

    IReport & JasperReport

    4. **数据源集成**:支持多种数据源,如数据库连接、XML、CSV文件等,方便数据导入和处理。 5. **预览功能**:可以在设计过程中实时预览报表效果,便于调整和优化。 **JasperReport** JasperReport则是一个开源的...

    springmvc+jasperReport5.6.0

    它支持多种数据源,包括数据库连接、Java集合、XML数据等。JasperReport设计报告的工具是iReport(现在已经发展为Jaspersoft Studio),它允许开发者通过拖拽方式设计报表模板,并且提供了丰富的内置函数和样式控制...

    ireport+javabean实现可视化报表

    ireport支持多种数据源,包括数据库、XML文件、Java对象(如javabean)等。 2. **jasperreports**:这是Apache软件基金会的一个项目,它是一个强大的报表生成库,能够处理各种类型的输出格式,如PDF、HTML、Excel、...

Global site tag (gtag.js) - Google Analytics