1.所需jar包
ireport的安装目录下:
iReport-3.7.3ireportmodulesext(如果为3.7.3):
jasperreports-3.7.3.jar
iText-2.1.7.jar
groovy-all-1.5.5.jar
commons-digester-1.7.jar
commons-collections-3.2.1.jar
commons-beanutils-1.8.2.jar
2.中文问题
需要iText-verson.jar和iTextAsia.jar
①设置字体为宋体
②pdf embedded 勾上
③设置 pdf encoding 为 UniGB-UCS2-H
④设置Pdf font name is now .. 为 STSong-Light
3.如果使用javabean为数据源,则要写一个继承JRDataSource的数据源类,如
public class RepairContactMenuDataSource implements JRDataSource {
public RepairContactMenuDataSource(List datas) {
this.datas = datas;
}
private List datas = null ;
private int index = -1 ;
public Object getFieldValue(JRField field) throws JRException {
RepairContactMenu repairContactMenu = (RepairContactMenu)this.datas.get(index);
Object value = null;
String fieldName = field.getName();
if ("serialNum".equals(fieldName)) {
if(repairContactMenu.getSerialNum()!=null){
value = repairContactMenu.getSerialNum();
} else{
value = "";
}
} else if ("date".equals(fieldName)){
if(repairContactMenu.getDate()!=null){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
value = sdf.format(repairContactMenu.getDate());
} else {
value = "";
}
} else if("reason".equals(fieldName)){
if(repairContactMenu.getReason()!=null){
value = repairContactMenu.getReason();
} else {
value = "";
}
}
repairContactMenu = null ;
return value;
}
public boolean next() throws JRException {
index ++;
return index < datas.size();
}
}
4.可以写一个测试类,如下
public class RepairContactMenuDataSourceProvider extends JRAbstractBeanDataSourceProvider {
public RepairContactMenuDataSourceProvider(Class beanClass) {
super(beanClass);
}
@Override
public JRDataSource create(JasperReport arg0) throws JRException {
List list = new ArrayList();
RepairContactMenu repairContactMenu = new RepairContactMenu();
repairContactMenu.setSerialNum("2010");
list.add(repairContactMenu);
return new JRBeanCollectionDataSource(list);
}
@Override
public void dispose(JRDataSource arg0) throws JRException {
}
public static void main(String[] args) throws JRException{
List list = new ArrayList();
RepairContactMenu repair = new RepairContactMenu();
repair.setSerialNum("4444");
repair.setDate(new Date());
repair.setContent("dfdfdf");
repair.setDepartmentView("dfdfdf");
repair.setReason("是由");
list.add(repair);
String filename = "F:\*\report2.jasper";
JasperPrint print = JasperFillManager.fillReport(filename, null, new RepairContactMenuDataSource(list));
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "F:\*.pdf");
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.exportReport();
}
}
4.Servlet类
使用了spring的mvc
@Controller
public class ExportReportContactMenuServlet {
@Autowired
private RepairContactMenuService repairContactMenuService;
@RequestMapping("/excel/exportToPdf.do")
protected void export(HttpServletRequest request, HttpServletResponse response)
throws IOException, BiffException, WriteException, JRException {
String repairContactMenuId = request.getParameter("id");
RepairContactMenu repairContactMenu = (RepairContactMenu)repairContactMenuService.loadById(repairContactMenuId);
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
String jrFilePath = request.getSession().getServletContext().getRealPath("/report/report2.jasper");
JasperReport report = (JasperReport)JRLoader.loadObject(jrFilePath);
Map parameters = new HashMap();
String imagePath = request.getSession().getServletContext().getRealPath("/report/isAudited.gif");
parameters.put("image_uri", imagePath);
parameters.put("isAudited", isAudited);
List repairContactMenus = new ArrayList();
repairContactMenus.add(repairContactMenu);
byte[] bytes = JasperRunManager.runReportToPdf(report, parameters, new RepairContactMenuDataSource(repairContactMenus));
response.setContentLength(bytes.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytes, 0, bytes.length);
outputStream.flush();
outputStream.close();
}
}
5.JasperReport基本概念
字段,参数和变量:Fields,Parameters,Variable;
报表结构
Title Band:在整个报表的第一页的最上面部分显示,其他页面不会出现此band内容;
pageHeader Band:其内容会在整个报表中的每一个页面中出现,显示在页面的上部,如果是报表的第一页其内容将显示在Title Band下面,除首页之外的所有页面中pageHeader内容将显示在页面的最上端;
pageFooter Band:显示在所有页面的最下端;
Detail Band:报表内容段,是报表设计中需要重复出现的内容,在每页都会出现;9 c- q4 E: V" p. w4 g1 R6 k. ~
columnHeader Band:针对Detail Band的表头段,一般情况下在这个段中画报表的表头;$ g W* H' ^' t/ m* Z/ a
columnFooter Band:针对Detail Band的表尾段;9 b9 N7 {) y! H. P( Z
Summary Band:表格的合计段,出现在整个报表的最后一页中的Detail band的后面,一般用来统计报表中的某一个或某几个
http://blog.sina.com.cn/s/blog_8020e41101015p4c.html
分享到:
相关推荐
下载包含程序源码,lib包,ireport创建模板操作文档,说明。程序可以在java myeclipse环境下直接运行。jasperreport版本6.3.1,ireport为5.6.0
实例中通过利用自定义javabean数据源实现报表实例,其中有代码和文档,还有项目中所需要的jar包,不需要重新下载jasper获取jar包
jasperreport学习 之 javabean封装成list作为数据源.pdf 数据源制作方法,文档里面还包括源码下载地址。
几经探索,终于寻找到在一个报表中使用多个数据源的方法,现在分享出来以便后来者少走弯路!网上很多资料说多数据源只能使用子报表方式,呵呵!
图示ireport中使用javabean作数据源开发基于jasperreports报表过程
jasperreport创建多个List数据源报表 通多个detail实现多个table效果,简单 快捷
webwork下jasperreport的subreport使用套打 javabean作为数据源。
图示ireport 中使用javabean 作数据源开发 基于 jasperreports 报表 过程
一个完整的jasperreport+myeclipse+struts2例子,方便大家学习
子报表的列子刚开始学的不知道如何下手,看了这个例子都明白了
jasperReport详细教程及例子
jasperreport从数据库中取数据
Jasperreport 客户端打印例子
jasperreport报表开发小结,使用ireport设计报表模板,javabean作为数据源,整合springboot实现在线预览和导出各种格式的报表
springMvc集成JasperReport超简单一个简单方法搞定,支持excel、html,扩展方便简单实用
详细介绍了如何利用ireport+jasperreport柱状图例子,并附有代码,参照实例,手把手教你用该解决方案作柱状图。
iReport 4.0.1 导出Html和PDF报表完整例子
软件说明: jasperreport 是一款报表打印组件,是开放源代码组织sf.net 中的一个java 报表打印工 程,在我写这篇文章时,jasperreport 的最新版本是0.5.2 版,jasperreport 的最新版本可以 从...
所需要jar包2 博文链接:https://zmx.iteye.com/blog/581075
自己制作报表的测试源码和所有相关学习资料,对应所有jar包,jasperReport版本。