关于ireport table javabean实现方式

前言:

前段实现有个需求,boss要求做一个生成pdf的接口。简单来讲就是产给你参数,然后根据这些参数生成pdf。麻烦就在于pdf中有个表格。于是到处搜贴,网上大多讲的是如何利用DataSet生成Table,帖子里都是教你怎么搞数据库。但是我不想用数据库,只是简单地将javabean数据注入paf中。下面来说一下,我的处理办法。

我从ireport设计和程序两方面来说一下这个问题。

1、  ireport设计

a)    首先是新建一个report。

b)    插入一个table。

 

  选择table,然后将table拖入report。

 

由于我们是利用javabean不通过什么dataset,所以这里可以直接选择第二项然后继续就行了。


由于我是做个简单的demo所以就绘制了一个最简单的table,完成


界面出来以后你会发现,多了这些东西。

 

这里先描述一下如何将javabean数据插入table中的,table默认是设置dataset类型的数据作为数据源,dataset一般是通过sql查询出的结果,即便不设置也会自动创建一个dataset,上图中的table Dataset 1就是默认给table创建的数据源。切入点就是将dataset对象替换。修改成可以通过javabean传入的类型,这里我们就用net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

类型的report Filed作为dataset的数据源。

 

那么我们需要先新建一个Filed,并设置类型


注意这里的类型没有我们想要的,直接将类型设置上就行。


这样以后再xml中可以看到类型是


Table中用到的Filed需要从table Dataset 1中添加里。我们先创建两个


修改table中的数据源


选中table右击编辑数据源


将默认的清掉,然后双击table_datas


apply,然后再ok即可。

 

 

然后在设置table显示的数据,直接将table Dataset 1下的t1 t2拽进来就行。


现在已经完成了全部的ireport操作,编译一下。就行了

 

2、  开发部分

先简单说一下我的开发环境。

MyEclipse8.6、tomcat7、jdk6

demo项目采用了springmvc的框架

 

重点看一下传参数和生成模块的代码

   

@RequestMapping("/create")

    publicvoid createPdf(HttpServletRequest request,

           HttpServletResponse response) {

      

       init(request);

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

       parameters.put("SUBREPORT_DIR", jasperPath);

       List<PdfDetail> list = new ArrayList<PdfDetail>();

       PdfDetail detail = new PdfDetail();

       detail.setField1("hello");

      

       //本地路径的图片

       detail.setMi(imagePath);

      

       //添加网络路径图片

    detail.setImageUrl("http://d.hiphotos.baidu.com/image/pic/item/e824b899a9014c08ed5f84a5087b02087bf4f44e.jpg");

      

       //创建table数据

       List<PdfTable> pdfTables = new ArrayList<PdfTable>();

       PdfTable pdfTable = new PdfTable();

       pdfTable.setT1("t1");

       pdfTable.setT2("t2");

       pdfTables.add(pdfTable);

       pdfTables.add(pdfTable);

       pdfTables.add(pdfTable);

       pdfTables.add(pdfTable);

       pdfTables.add(pdfTable);

       pdfTables.add(pdfTable);

       pdfTables.add(pdfTable);

       pdfTables.add(pdfTable);

       detail.setTable_datas(new JRBeanCollectionDataSource(pdfTables));

      

       list.add(detail);

      

       //添加两张美女提提神

      

       //添加网络路径的图片

       list.add(new PdfDetail("http://a.hiphotos.baidu.com/image/pic/item/faf2b2119313b07eb2ce890c0ed7912397dd8c47.jpg"));

       list.add(new PdfDetail("http://e.hiphotos.baidu.com/image/pic/item/dcc451da81cb39db62ca5653d2160924ab1830a8.jpg"));

      

      

       //成功pdf文件

       try {

          createFileWrite(response,request.getSession().getServletContext(), list, jasperPath, System

                  .currentTimeMillis()

                  + "", parameters);

       } catch (Exception e) {

           e.printStackTrace();

       }

 

    }


 


对了在介绍一下解决中文不显示问题:

 

其实很简单

选中文本属性的控件,属性底部区域


修改后

 

QQ群:255825960

 代码下载地址:http://pan.baidu.com/s/1qWLjRru

ireport环境、文档、代码、效果下载地址:http://pan.baidu.com/s/1sjkAdkh

代码的介绍很短。不过相信大家还是可以看懂吧。还可以去群里讨论。

效果图:


255825960255825960255255825960255825960825960

ireport

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值