Ireport的使用
Ireport的结构
Title 标题,在报表中只出现一次
Page Header 页头;Column header 列标题
Detail 放置用来循环的记录;Page footer 页脚;Summary 总结
常用按钮
1.线段,用来画线的
2.T,是静态文本框
3.F,是动态文本框,用来放变量
4.数据库,查看SQL语句,语句的where后面写成 1=$P!{ls_sql}(固定格式)
5.编译,编译后的文件默认在软件的安装目录下,Java项目里用编译文件。
6.执行报表,可以查看报表样式
左侧菜单结构
在parameters处右键选择ADD添加参数,点执行报表按钮时给参数赋值。
链接数据库
选择链接/资料来源
弹出下图,点击new
填写相应信息,如果没有要选择的数据库链接,可能是缺少相应的ojdbc jar包
如下图,是我写的配置,连的是oracle数据库。
点击test按钮,测试链接是否成功,成功后点击save保存配置。
画报表的注意事项
选择文本框,右键,选择属性
出现如下图框,所有文本框都要选择宋体,勾选PDF,右侧选择
UniGB-UCS2-H (Chinese Simplified)
注意文本框的类型,bigdecimal数字型,String字符型。
右键,选择编辑
出现下图,蓝色变量名是错误的,双击变量下面的变量名,上面会出现绿色的变量名,是正确的。
如不注意以上事项,在开发时会不显示内容。
项目代码示例
jsp
//导出PDF
function printpdf(){
var dw = "<%=dw%>";
var rq = "<%=rq%>";
var selected_id = $(".ck_qh_blue").attr("id");
var flag = selected_id.substring(selected_id.length-2);
window.open("/popnet/tgjtAction.do?tgjtMethod=printpdf&dwbh="+dw+"&rq="+rq+"&flag="+flag,"newwindow", "height=500, width=1024, top=0,left=0, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes,location=yes,status=yes");
return false;
}
action
/**
* 特岗备案申报情况明汇总,导出PDF
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
public ActionForward printpdf(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
String dwbh=(String)request.getParameter("dwbh");
String rq=(String)request.getParameter("rq");
String flag=(String)request.getParameter("flag");
TgmdConn tgmdModel = null;
try {
tgmdModel = new TgmdConn();
tgmdModel.print(request, response,dwbh,rq,flag);
} catch (SQLException e) {
e.printStackTrace();
} finally {
tgmdModel.close();
}
return mapping.findForward("");
}
model
/**
* 特岗备案申报情况明汇总,导出PDF
* @param request
* @param response
* @param sql
* @param jasperUrl
*/
public void print(HttpServletRequest request,HttpServletResponse response,String dwbh,String rq,String flag){
Connection conn = new DBconn().getConnection();
String path = FileCom.getAppDiskPath();
String fileName = "jczxjthz.jasper";
if("mx".equals(flag)){
fileName = "yzxrmjczqgwjtba-mx.jasper";
}
String pathMainJasper = path + "popnet/tgjt/pdf/" + fileName;
Map parameters = new HashMap();
String sql = "1 and V_DWBH='"+dwbh+"' and V_ZZNY='"+rq+"'||'-01'";
parameters.put("ls_sql", sql);
JasperPrint jasperPrint;
try {
jasperPrint = JasperFillManager.fillReport(pathMainJasper,parameters, conn);
FileBufferedOutputStream fbos = new FileBufferedOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos);
try {
exporter.exportReport();
if (fbos.size() > 0) {
response.setContentType("application/pdf");
response.setContentLength(fbos.size());
ServletOutputStream ouputStream = response
.getOutputStream();
try {
fbos.writeData(ouputStream);
fbos.dispose();
ouputStream.flush();
} finally {
ouputStream.close();
}
}
} catch (JRException e) {
throw new ServletException(e);
} finally {
fbos.close();
fbos.dispose();
conn.close();
}
} catch (Exception e) {
System.out.println("PDF打印错误!");
e.printStackTrace();
}
}