当前位置:首页 > Web开发 > 正文

jasper使用table组件设计庞大的表头

2024-03-31 Web开发

标签:

1.1 设计报表模板

1.1.1 新建模板DemoReport5.jrxml,去失不需要的Band,保存Title,Page Header,Detail 1 , PageFooter。将组件Table拖入到Detail1 中,跳出Dataset窗口。选择 Create .. ,然后Next

技术图片

1.1.2 给Dataset定名。选择 Createnew dateset ... ,然后Next

技术图片

技术图片

技术图片

技术图片

1.1.3 只保存Column Header,然后 Finish

技术图片

1.1.4 点击Detail中的Table组件进入到Table界面中。

技术图片

1.1.5 在Column Header中右键Column1 选择Create Column After,生成4个Column

技术图片

1.1.6 一般表头都是 合并列的庞大表头。选择Column1 右键 -》 Group Columns

技术图片

在Columns[1]中的Column1右键Create Column after ,,显示如下:

技术图片

将其他三个也如此操纵

技术图片

1.1.7 将组件Text Field 拖入表格中,并设置表头名

技术图片

1.1.8 在dateset1中新建Field属性,并拖入到Table的Detail中,设置字体样式(这里自界说定名Filed,且注意类型)

技术图片

1.1.9 返回到Main Report ,新建Fields 定名为table Data,设置Class为JRBeanCollectionDataSource,注意写全路径,新建一个Field为Date,Class为String

技术图片

1.1.10 点击Main Report 的Detail中的Table,显示Properties后,点击DataSet,选中Use a JRDatasource expression,将新建tableData写入。

技术图片

技术图片

生存模板,并复制到JasperWeb项目中。

1.2 编写Servlet注入数据源

1.2.1 新建Fields类和ModelTableSource类如下:

 

package com.jasper.bean;

 

public class Fields {

 

private String field1;

private String field2;

private String field3;

private String field4;

private String field5;

private String field6;

private String field7;

private String field8;

 

//get 和 set要领省略

 

}

 

package com.jasper.bean;

 

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

 

public class ModelTableSource {

/**

* 注入table组件的数据源

*/

private JRBeanCollectionDataSource tableData;

/**

* 当前时间(盘问时间)

*/

private String date;

// get和set要领省略

 

}

1.2.2 新建JasperServlet5 ,doGet内容如下:

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

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

 

String jrxmlPath = request.getServletContext().getRealPath("http://www.mamicode.com/")+"/jrxml/DemoReport5.jrxml";

//由jrxml文件编译后出产jasper文件的路径

String jasperPath = request.getServletContext().getRealPath("http://www.mamicode.com/")+"/jasper/DemoReport5.jasper";

 

FileInputStream isRef = null;

ServletOutputStream sosRef = null;

 

try {

//编译jrxml出产jasper文件

JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);

 

isRef = new FileInputStream(new File(jasperPath));

sosRef = response.getOutputStream();

//组装list数据源

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

for(int i = 1 ; i <= 20; i++) {

Fields fields = new Fields("field"+i,"field"+(i+1),"field"+(i+2),"field"+(i+3),"field"+(i+4),"field"+(i+5),"field"+(i+6),"field"+(i+7));

list.add(fields);

}

ModelTableSource mts = new ModelTableSource();

mts.setDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));

mts.setTableData(new JRBeanCollectionDataSource(list));

List<ModelTableSource> mlist = new ArrayList<ModelTableSource>();

mlist.add(mts);

//new JRBeanCollectionDataSource(list) 以javaBean为数据源注入报表数据

JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(mlist));

response.setContentType("application/pdf");

} catch (JRException e) {

 

e.printStackTrace();

}finally {

sosRef.flush();

sosRef.close();

}

}

1.2.3 启动tomcat并访谒

技术图片

jasper使用table组件设计庞大的表头

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31557.html