- 浏览: 89997 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Ginger90:
其实大部分功能和帆软报表差不多,但是帆软报表编写起来更方便一些 ...
iReport+jasperReport之JFreeChart(图表报表) -
tiancaishan:
这只是最简单的主数据源,那子数据源怎么设置呢?
iReport+jasperReport之CSV、XML数据源 -
wangqiangcattsoft:
楼上源码只看了一半
Struts2整合JasperReport预览HTML格式不显示图片问题解决方案 -
tuan232311009:
不错!
黑莓开发学习入门系列,自己动手实现一个日历软件(六)
iReport+jasperReport之CSV、XML数据源
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类型数组存放模板对应的列名和文本数据对应"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"
String[] columNames = new String[] { "pid", "name", "sex", "age", "password",
"department" };
识别这些数据并不难,下面这一句就可以搞定:"department" };
JRCsvDataSource jrcsvDataScource = new JRCsvDataSource(JRLoader
.getLocationInputStream("D:\\workspace\\Person.txt"));
我们怎么才能让它识别对应的列呢?查看API看看对应的set方法吧!.getLocationInputStream("D:\\workspace\\Person.txt"));
// set record delimiter
jrcsvDataScource.setRecordDelimiter("\r\n");
// set columnName
jrcsvDataScource.setColumnNames(columNames);
至此数据源就准备完了,jasperReport封装了底层的实现,简单吧!下来看看完整的代码:
jrcsvDataScource.setRecordDelimiter("\r\n");
// set columnName
jrcsvDataScource.setColumnNames(columNames);
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;
}
}
还是这样的效果吧!^_^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有多强大了吧!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();
}
}
发表评论
-
如何使用Static的变量和方法
2007-12-01 10:55 710如何使用Static的变量和方法有时你希望定义一个类成员 ... -
Transact-SQL简明语法
2007-12-01 11:02 1026最简单的查询语法格式: SELECT <列名&g ... -
去北京面试时的题目(老师生日)微软面试题
2007-12-01 19:59 1180小明和小强都是张老师的学生,张老师的生日是 M月 N日, 2人 ... -
有点象24点游戏,说说你的想法
2007-12-01 23:02 751* 5、5、5、1怎么能算出24呢? * ... -
JDK5增强for循环的使用
2007-12-02 23:43 783JDK5增强for循环的使用,此语法有很大的缺陷,仅适用于有限 ... -
Java中的多态
2007-12-03 11:26 790在实际操作中,多态可以让我不用关心某个对象到底是什么具体类型, ... -
运用线程实现时间更新
2007-12-06 11:01 750线程的做的时间表,不知道合不合适,哪位还有更好的实现方式(ja ... -
生产者消费者问题(以面包为例)
2007-12-10 19:48 759package Thread;public class Pr ... -
数据库关系表解决方案
2007-12-26 21:45 738数据库关系的表之间定义一个连接,而所定义连接的方式由表之 ... -
Struts2表单请求流程(一)
2007-12-29 20:09 854Struts2框架出来有段时间了,终于开始学习Struts了, ... -
Struts2表单请求流程(二)— Struts2高级的POJO访问
2007-12-29 20:20 1935此文主要来自www.blogjava.net/Max的实例 S ... -
开源软件逐渐走进了我的生活
2008-03-18 21:58 734看看我们经常用的软件吧! 以前经常去找一些破解的软件用,没有那 ... -
Struts2中select/doubleselect标签数据显示
2008-04-02 08:46 1088最近做毕业设计用到Struts2 的标签库,遇到一些比较复 ... -
用commons-email-1.1.jar实现发邮件功能:
2008-04-07 09:47 1085今天在Apache网站上下载commons-lang j ... -
JFreeChart简单使用
2008-04-18 09:29 874JFreeChart is a free chart libr ... -
Spring2.5.3+Hibernate3.2+Struts2.0.11整合
2008-04-18 13:59 894Spring2.5.3+Hibernate3.2+Struts ... -
java截取字符串的一些常用处理
2008-08-01 09:06 956java对字符串处理功能强大,以下是本人实际开发中用到的一些总 ... -
dom4j操作xml基础
2008-08-03 15:39 959DOM是用与平台和语言无关的方式表示XML文档 ... -
office javaScript调试工具
2008-08-05 18:21 913项目前台需要写大量的js,寻求一种有效 ... -
Visitor访问者模式---------学习dom4j时遇到的顺便拿来交流
2008-08-10 12:12 916dom4j遍历xml文档树有种很特别的方式就是访问者( ...
相关推荐
4. **数据源配置**:了解如何配置不同类型的数据源,如JDBC连接、CSV文件、XML数据等。 5. **jasperreport API**:学习Java API的使用,包括 JasperFillManager、JasperExportManager 和 JasperPrint 等类,用以...
1. 数据源设置:ireport支持多种数据源,包括JDBC、XML、CSV等,使报表可以连接各种数据库获取数据。 2. 报表设计:掌握表格、图表、文本框等元素的使用,以及样式和样式的自定义,能构建出丰富的报表界面。 3. 导出...
- **数据源支持**:jasperReport 支持多种类型的数据源,包括 XML、XLS、JavaBeans、SQL 等。 - **导出格式**:可以将报表导出为 PDF、HTML、CSV、XML 等多种格式。 **2. 必需的 jar 包** 对于 jasperReport 4.5.0...
iReport支持多种数据源,如数据库连接、CSV文件、XML数据等,可以方便地进行数据绑定和查询。此外,它还提供了丰富的样式和格式设置选项,使你可以定制出美观且信息丰富的报表。 JasperReport则是报表引擎,它负责...
JasperReport 提供了丰富的报表元素,如表格、图表、文本框等,并支持多种数据源,包括数据库连接、CSV文件、XML数据等。通过JasperReport,开发人员可以创建静态报表,也可以生成动态的、交互式的报表。 ### ...
它能够处理各种数据源,包括关系型数据库、CSV文件、XML数据等。JasperReports支持多种输出格式,如PDF、HTML、Excel、CSV和XML。报表可以嵌入到Java应用程序、Web应用或者独立运行。 在"ireport+jasperreport一个...
通过以上步骤,你可以利用jasperreport和ireport创建一个基于JavaBean的多数据源报表。这种能力使开发者能更灵活地处理复杂的业务数据,生成满足需求的定制化报表。同时,jasperreport的开放源码特性使其成为许多...
iReport支持多种数据源,包括数据库连接、CSV文件、XML数据等,使得报表设计变得更加灵活。 **三、iReport的关键特性** 1. **WYSIWYG编辑器**:iReport提供所见即所得的编辑环境,使得设计报表如同操作Word一样简单...
- **支持多种数据源**:可以连接到数据库、XML文件、JavaBeans等多种数据源。 在实际开发中,JasperReport和iReport的组合使用可以帮助开发者高效地实现报表的生成和导出功能,而且由于其开源性质,可以自由定制和...
【JasperReport】是Apache软件基金会的一个项目,它提供了一个强大的报告引擎,能够处理各种数据源,如数据库、CSV文件、XML数据等,生成静态或交互式的HTML、PDF、Excel、CSV等多种格式的报表。JasperReport ...
它允许开发者通过直观的用户界面,使用拖放功能设计复杂的报表模板,支持多种数据源,如数据库、XML、CSV等。在设计报表时,.jrxml 文件是保存模板的XML格式文件,其中`language`属性通常设置为`Java`,因为...
Jasperreport 的优势在于其灵活的数据绑定机制,可以支持多种数据源,包括 JDBC、CSV、XML 等。通过使用表达式和变量,开发者可以在报表中实现复杂的计算和逻辑操作。 iReport 的配置相对简单,只需设置JAVA_HOME和...
在iReport中可以创建JDBC数据源或自定义数据源。 3. **编译报表**:设计完成后,将iReport中的报表保存为JRXML文件,然后使用JasperCompileManager类编译成JasperReport对象。 4. **填充报表**:在运行时,通过...
它是用于创建和编辑JasperReports的图形化界面工具,支持多种数据源,包括数据库、CSV文件、XML数据等。通过Ireport,用户可以设计各种类型的报表,如表格、图表、文本、图像等,并能够进行样式和布局的定制。版本...
- **数据绑定**:iReport支持多种数据源的绑定,如数据库、XML文件、CSV文件等。通过简单的配置,即可实现数据的自动填充。 - **报表预览与调试**:iReport内置了预览功能,可以在设计阶段实时查看报表效果。这对于...
JasperReport是一个开源的Java报表库,它提供了丰富的报告设计功能,支持多种数据源,如数据库、CSV文件等。JasperReport的核心在于它的模板引擎,允许开发者通过设计XML或JRXML格式的报表模板来定义报告的布局和...
4. **数据源集成**:支持多种数据源,如数据库连接、XML、CSV文件等,方便数据导入和处理。 5. **预览功能**:可以在设计过程中实时预览报表效果,便于调整和优化。 **JasperReport** JasperReport则是一个开源的...
它支持多种数据源,包括数据库连接、Java集合、XML数据等。JasperReport设计报告的工具是iReport(现在已经发展为Jaspersoft Studio),它允许开发者通过拖拽方式设计报表模板,并且提供了丰富的内置函数和样式控制...
ireport支持多种数据源,包括数据库、XML文件、Java对象(如javabean)等。 2. **jasperreports**:这是Apache软件基金会的一个项目,它是一个强大的报表生成库,能够处理各种类型的输出格式,如PDF、HTML、Excel、...