ireport图表 导出的chart图表不能显示

iReport中文教程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
iReport中文教程
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢连接/资料来源”菜单
新建数据库JDBC连接
单击 “new” 按钮,弹出如下窗口,设置JDBC连接参数
新建报表查询
选择”Data---->报表查询”菜单,出现如下窗口,输入SQL语句:
select * from employee
放置列标题
放置详细信息
查看报表结果
  报表设计注意事项
  (1)报表模板中每一个text或者file文本域属性common中的Position Type是很有用的一个属性,在使用中如果遇到了文本域需要浮动则选择float。
其他相应一些技巧均在属性中可以找到,在模板制作过程中应多注意,这里不再多说。
  (2)报表模板正文区域:
  title:title段只在整个报表的第一页的最上面部分显示,除了第一页以外不管报表中有多少个页面也不会出现title段的内容。   
pageHeader:pageHeader段中的内容将会在整个报表中的每一个页面中都会出现,显示位置在页面的上部,如果是报表的第一页,pageHeader中的内容显示在title段的下面,除了第一页以外的其他所有页面中pageHeader中的内容将显示在页面的最上端。
  columnHeader:针对detail段的表头段,一般情况下在这个段中画报表中列的列标题,每页均会出现一次。
  detail:报表内容段,在这个段中设计报表中需要重复出现的内容,detail段中的内容每页都会出现。
  columnFooter:针对detail段的表尾段,每页均会出现一次。
  pageFooter:显示在所有页面的最下端,每页都显示,最后一页由lastPageFooter代替。
  lastPageFooter:最后一页页尾段内容,只在最后一页出现一次。
  summary:报表合计段,出现在整个报表的最后一页的detail段的后面,一般用来统计报表中某一个或某几个字段的合计值。
  4、iReport使用
  iReport使用过程中将需要用到的jar文件放到工具下的lib文件夹下,例如oracleDriver的jar包。
  iReport制作的报表可视化文件后缀是.jrxml,编译此文件后将生成模板文件后缀名是.jasper。(如图2.1)
  使用JavaBean做为数据源的话,制作一个javaBean将其打为jar文件,在iReport工具中的Options选项下的Classpath中使用添加jar将文件引入。在Data?Report query中选择JavaBean Data Source将jar文件中的类名字输入到Class name位置点击右边按钮就可以了,javaBean中定义的字段就显示出来了选择自己需要用的字段点击add按钮。
  写一个DataSourceFactory类打成jar文件,并在classpath中将文件引入,然后在Data?Connections/Datasources选择new再弹出的对话框中选择JavaBeans set data source 然后将刚刚jar文件中的factory类对应的名字写下来就可以了。
  最后在iReport中动态执行报表就可以了。
  5、iReport生成文件中的字体问题
  iReport在生成文件时有可能会遇到中问乱码的问题,那么在制作模板时就要注意中文字段属性要正确的选择,而且3个针对于pdf中文乱码问题的jar文件(iTextAsian.jar, itext-1.3.1.jar, iTextAsianCmaps.jar(该文件我似乎没有))不能少。还有一点就是关于中文字符问题可以将操作系统自带的字体文件copy到iReport对应的文件夹中就可以使用,在web工程中要放的class文件夹下。例如中文宋体字体文件(C:\WINDOWS\Fonts 文件夹下的文件)copy到web工程下的class文件夹下。
  6、java代码实例
3.import java.sql.C
4.import java.sql.DriverM
6.*数据库的连接类
8.public class JDBCConnection {
9.public static Connection getConnection(){
11.String url = "jdbc:oracle:thin:@127.0.0.1:1521:ruanko";
12.Class.forName("oracle.jdbc.driver.OracleDriver");
13.Connection con = DriverManager.getConnection(url, "little", "little");
}catch(Exception e){
e. printStackTrace();
1.package report.
3.import java.util.HashM
4.import java.util.I
5.import java.util.L
6.import java.util.M
8.import net.sf.jasperreports.engine.JRDataS
9.import net.sf.jasperreports.engine.JRE
10.import net.sf.jasperreports.engine.JRF
dataSource类(也就是数据填充类),实现JRDataSource接口
通过放在list里面的Map对象迭代实现数据对应
15.public class ReportDataSource implements JRDataSource {
17.private List datas = DateSourceBaseFactory.createBeanCollection(String id);
19.private Iterator iter = datas.iterator();
21.Map map = new HashMap();
23.public ReportDataSource() {
26.public ReportDataSource(String id) {
29.public boolean next() throws JRException {
30. if(iter.hasNext()){
map = (Map) iter.next();
37.public Object getFieldValue(JRField arg0) throws JRException {
38.return map.get(arg0.getName());
1.package report.
3.import report.JDBCC
4.import java.sql.C
5.import java.sql.ResultS
6.import java.sql.SQLE
7.import java.sql.S
8.import java.sql.T
9.import java.util.ArrayL
10.import java.util.HashM
11.import java.util.L
12.import java.util.M
14.* Map中的键值要与模板文件的file值对应。
16.public class DataSourceBaseFactory {
18.public static List createBeanCollection(String id) {
20.ResultSet rs =
21.Statement st =
22.Connection con =
23.List datas = new ArrayList();
26.con = JDBCConnection .getConnection();
27.st = con.createStatement();
28.rs = st. executeQuery (“select name,password,sex from people where id = ” id);
29.while(rs.next()){
30.Map attris = new HashMap();
31.attris.put("name", rs.getString(“name”));
32.attris.put("password", rs.getString(“password”);
33.attris.put("sex", rs.getString(“sex”));
34.datas.add(attris);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(rs != null) rs.close();
if(st != null) st.close();
if(con != null) con.close();
} catch (SQLException e) {
e.printStackTrace();
1.package report.bean
3.import java.io.S
5.* dataSource的javaBean类。用于创建模板
7.public class DataSourceBean implements Serializable {
private static final long serialVersionUID = -5400007L;
public String getName(){
public void setName(String name){
this.name =
public String getPassword (){
public void setPassword(String password){
this.password = password
public String getSex(){
public void setSex(String sex){
this.sex =
3.import java.io.ByteArrayOutputS
4.import java.io.F
5.import java.io.FileOutputS
6.import java.io.IOE
7.import java.util.D
8.import java.util.HashM
9.import java.util.M
11.import net.sf.jasperreports.engine.JRAbstractE
12.import net.sf.jasperreports.engine.JRE
13.import net.sf.jasperreports.engine.JRExporterP
14.import net.sf.jasperreports.engine.JasperFillM
15.import net.sf.jasperreports.engine.JasperP
16.import net.sf.jasperreports.engine.export.JRPdfE
17.import net.sf.jasperreports.engine.export.JRPdfExporterP
19.* 测试入口类,生成pdf文件
20.* JasperFillManager中有多个生成文件的方法
21.* 除了可以生成pdf文件外还可以生成ofice文档文件。
23.public class TestReportHere {
25.public static void main(String[] args) {
26.Map parameters = new HashMap();
28.ByteArrayOutputStream outPut = new ByteArrayOutputStream();
29.FileOutputStream outputStream =
30.File file = new File("E:/workspace/report.pdf");
31.String reportModelFile = "E:/workspace/reportModel.jasper";
34.JasperPrint jasperPrint = JasperFillManager.fillReport(reportModelFile, parameters, new ReportDataSource(“123”));
35.JRAbstractExporter exporter = new JRPdfExporter();
创建jasperPrint
39.exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
生成输出流
43.exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,outPut);
屏蔽copy功能
47. exporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED,Boolean.TRUE);
51.exporter.setParameter(JRPdfExporterParameter.IS_128_BIT_KEY,Boolean.TRUE);
52.exporter.exportReport();
53.outputStream = new FileOutputStream(file);
54.outputStream.write(outPut.toByteArray());
}catch (JRException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
outPut.flush();
outPut.close();
} catch (IOException e) {
e.printStackTrace();
联系我们:
电话: 800-830-9336
本期相关文章iReport中的图表
在这一章节里我们将来学习如何使用chart
工具一步一步在一个报表里创建一个Pie3D的chart。在这个例子中我们将使用Mysql数据库作为数据源。
建立一个空白的文档,在“Report Inspector”面板的根节点处点击右键选择“Add
Dataset”,启动Dataset配置向导,创建向导分为四步:
给数据源命名
取字段信息
如下图所示:
上图标号分别代表
(1)、创建向导
(2)、选择数据库连接
(3)、输入sql
输入的查询语句:
SELECT COUNT(a.id) TOT,b.categoryname CategoryName
FROM books a LEFT JOIN categories b ON a.category_id=b.id GROUP BY
b.categoryname ORDER BY a.category_id。
这里我们想生成一个chart用来显示图书分类信息。点击OK确认,iReport将注册查询得到的fields。同时把这些fields从objects
library里拖出放入detail的band里。如下图所示:
选择组件面图标,选择pie3D图标并按OK按钮,添加Chart控件到Summary区,启动Chart控件的配置向导。
创建向导分为三步 :
选择或新建数据源
配置Keys和Values
如下图所示:
创建完成,如下图所示:
要配置chart,双击chart打开属性窗口,同时你可以通过右键菜单的方式打开chart的属性窗口。如下图所示:
这个窗口包含两个标签:“Dateset”和“Datails”。请分别按下图进行配置:
在“Dataset” 标签中允许你指定一个dataset用来生成图形。Reset type和Reset
group 允许你对dataset进行重置。
为了我们的需要,我们设置Reset type
为“Report”。当我们不想数据被重置时。同时我们设置Increment type
为None,这样每一条记录都将被附加到我们的dataset里。
在Detail标签里允许你键入一个表达式和每一个在datasource里单独的值关联。针对Pie
图表类型,有三个表达式需要我们输入:Key,Value和Label。
表达式Key允许你标识Pie图里的一块。如果Key的值出现重复,那么Label和Value的值会关联起来用来覆盖Key的值。一个Key值不能为null。Value的表达式值指定这个Key的数字值。
Label表达式的值允许你为并图中每一块指定一个标签。这个表达式的值是可选的,同时默认值为“&key&=&value&”,例如:“A=100”,A是并图中一个块的Key同时100是它的值。
选中新添加的Chart组件,设置chart属性。如下图所示:
确认对chart的修改,启动报表预览,如下图所示最后的效果。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 teechart导出图表数据 的文章

 

随机推荐