Jasper+ireport动态报表学习(二)使用数据库作为数据源进行报表绘制

 

使用数据库作为数据源进行报表绘制。

 

上一篇对于动态报表应该有了大致的了解,现在就进行第一次报表的产生

 

iReport报表绘制

不同版本的iReport在界面上会存在一些差异,以下文档基于iReport-5.5.0编写

1) 新建报表

【文件】à【New…】

\

 


选择一个模版,【Openthis Template】

\

 

 


通过【Browse】选择文件保存位置,并填写报表名称【Report name】

 

\

 

 

 


完成

 

 \

 

 

 

 

 

 

 

2) 创建Database Sources


点击【ReportDatasources】图标

\

 

【New】

 \

 

 


选择一个datasourcetype,这里选【Database JDBC connection】

\

填写数据库连续的相关信息,并保存

\

 

 

勾选默认Datasources,并关闭窗口

\

 

3) 
设置报表主要SQL \

输入主要SQL,相应的结果集的列会出现在下方

 \

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4) 报表结构

\

 

 

 

5) 在Detail中使用SQL结果

\

 

 

6) 使用iReport内置变量

 \

 

7) 使用报表外部参数

右键【Parameters】,选择【添加Parameter】

 \

 

 

通过右侧的【属性面板】修改参数名称,并拖动到报表中

\

 

 

8) 使用Dateset 创建汇总报表 (次要SQL)

 

 

 


右键【报表名称】(比如report_test002),选择【Add Dataset】

 

\

 

 

 

 


填写Dataset名称,【下一步】

 

\

 

 

 


选择DataSources,并填写SQL语句

 

\

 

 

 

选择要使用的列,并【下一步】

\

 

 

使用Group组自动Group up,也可通过SQL进行Group up

 \

 

 

通过【窗口à组件面板】打开组件面板

\

 

 


拖动Chart图标到报表中

\

 

 


选择一个图表类型,【OK】

 \

 

 


选择要使用的DataSet(比如上文刚刚创建的myDataSet1)

 

 \

 

 

填写Series描述

\

 

 

 

通过右侧按钮填写横坐标分组组名,即分组值

\

 

9) 预览报表


通过【预览】图标查看报表结果

\

 

如果有外部参数,将会弹出提示框要求录入

\

 


看到报表结果,可以通过【Designer】图标返回到设计界面

 \

 

 

10)编译报表


通过【编译】图标,可以对报表进行编译

\

4、Java报表生成

 

1) 引用JasperReports Library

 

Java Project中引入Jasper相关的jar包。(当然也需要DB 驱动的jar)

以下提供JasperReports 6.2.1版本的maven配置

<dependency>

            <groupId>net.sf.jasperreports</groupId>

            <artifactId>jasperreports</artifactId>

            <version>6.0.3</version>

        </dependency>

<dependency>

  <groupId>org.codehaus.groovy</groupId>

  <artifactId>groovy-all</artifactId>

  <version>2.4.7</version>

  </dependency>

Oracle驱动的Maven配置

<dependency>

       <groupid>com.oracle</groupid>

       ojdbc6</artifactid>

       <version>12.1.0.2</version>

    </dependency>

 

3、将jar打开把里面的 文件考到项目中即可如图:

 

程序代码:

[java] view plain copy 

1. package org.share.web;  

2.   

3. import java.io.File;  

4. import java.io.FileInputStream;  

5. import java.io.FileOutputStream;  

6. import java.io.IOException;  

7. import java.io.InputStream;  

8. import java.util.ArrayList;  

9. import java.util.HashMap;  

10. import java.util.List;  

11. import java.util.Map;  

12.   

13. import javax.servlet.http.HttpServletRequest;  

14.   

15. import net.sf.jasperreports.engine.JRDataSource;  

16. import net.sf.jasperreports.engine.JREmptyDataSource;  

17. import net.sf.jasperreports.engine.JasperExportManager;  

18. import net.sf.jasperreports.engine.JasperFillManager;  

19. import net.sf.jasperreports.engine.JasperPrint;  

20. import net.sf.jasperreports.engine.JasperReport;  

21. import net.sf.jasperreports.engine.JasperRunManager;  

22. import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;  

23. import net.sf.jasperreports.engine.util.JRLoader;  

24.   

25. import org.share.domain.tree.entity.UserInfo;  

26. import org.springframework.stereotype.Controller;  

27. import org.springframework.web.bind.annotation.RequestMapping;  

28. import org.springframework.web.bind.annotation.RequestMethod;  

29.   

30. @Controller  

31. @RequestMapping(value="/CreatePDf")  

32. public class CreatePDf {  

33.       

34.     @RequestMapping(value="/c",method=RequestMethod.GET)  

35.     public void createFilePdf(HttpServletRequest request){  

36.           

37.         //路径动态录入需要生产的pdf文件位置  

38.         String fileepath=request.getSession().getServletContext().getRealPath("template/repConReport.pdf");  

39.          FileOutputStream out=null;  

40.          InputStream input=null;  

41.         try{  

42.             //判断文件是否存在  

43.               File f=new File(fileepath);  

44.               if(!f.exists()){  

45.                   f.createNewFile();  

46.               }  

47.                 

48.               Map<String, Object> parameters=new HashMap<String, Object>();  

49.               parameters.put("title""张散弹");  

50.               parameters.put("head""nininn好好好好");  

51.               //模板文件  

52.               String ctxpathIreport=request.getSession().getServletContext().getRealPath("jasper/report3.jasper");  

53.               File reportFile=new File(ctxpathIreport);  

54. //            JasperReport jasperReport=(JasperReport)JRLoader.loadObject(reportFile);    

55. //            JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport, parameters);  

56.             input = new FileInputStream(reportFile);  

57.             out=new FileOutputStream(f);  

58.             //前面两个都是流  parameters 设置页面上的数据 最后一个数据源为空   

59.             JasperRunManager.runReportToPdfStream(input, out, parameters, new JREmptyDataSource());  

60.            //JasperExportManager.exportReportToPdfFile(jasperPrint,fileepath);  

61.           }catch (Exception e) {  

62.             e.printStackTrace();  

63.           }finally{  

64.               //关闭流  

65.               try {  

66.                     out.close();  

67.                 } catch (IOException e) {  

68.                     e.printStackTrace();  

69.                 }  

70.               try {  

71.                 input.close();  

72.             } catch (IOException e) {  

73.                 e.printStackTrace();  

74.             }  

75.           }  

76.     }  

77. }  

 

2)使用JasperReports Library导出文件

 

 

public class JasperReportsDemo001 {

  

    public static void main(String[] args)throws Exception {

       

       //加载DB驱动,并获得DB连接

       Class.forName("oracle.jdbc.driver.OracleDriver");

       String url = "jdbc:oracle:thin:@192.168.100.26:1521:LSSRTEST";

        String user = "myUserName";

        String password = "myPassword";

       Connection conn = DriverManager.getConnection(url, user, password);

       

       //设定报表所需要的外部参数内容

    Map<string, object=""> rptParameters = new HashMap<string, object="">();

       rptParameters.put("myParam", "hello world");

       

       //传入报表源文件绝对路径,外部参数对象,DB连接,得到JasperPring对象

       JasperPrint jasperPrint = JasperFillManager.fillReport("D:/temp/jasper_test/report_test001.jasper", rptParameters, conn);

       

       //导出PDF文件

       JasperExportManager.exportReportToPdfFile(jasperPrint, "D:/temp/jasper_test/test.pdf");

       

       //导入HTML文件

       JasperExportManager.exportReportToHtmlFile(jasperPrint, "D:/temp/jasper_test/test.html");

       //执行结束

       System.out.println("Export success!!");

    }

}

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值