struts2+jasperreport开发报表程序关键代码
2010-11-15 10:57
357 查看
问题2:就是生成html页面的时候,红**的问题,因为struts2默认的会有拦截,px,以至得不到图片,所以我把px文件名称改成了 px.px ,在引用的时候写px.
这样在附上下面这句代码,就解决了图片**问题:
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/test/images/px.");
下面附上3种方式生成报表,都为struts2中execute方法代码,代码为部分核心:
------------------------------------------------------------------------------------------------------------pdf-----------------------------------------------------------------------------------------------------------------:
sSQL = String.format(sSQL, sWhere);
Connection con = null;
String strMessage="";
ResultSet rs=null;
//String path1=request.getContextPath();
//String path2="E://workspace//IreportDemo//WebRoot//report//SecondDemo.jasper";
String path= request.getRealPath("/reports/jb7.jasper");
System.out.println(path);
File reportFile = new File(path);
byte[] bytes=new byte[200];
try {
con = DBConnection.currentConnection();
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
// ResultSet rs=DBConnection.getConnection();
rs=stat.executeQuery(sSQL);
} catch (SQLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
JRResultSetDataSource ds = new JRResultSetDataSource(rs);
System.out.println("-------------------------------------------------------------");
try {
System.out.println(ds.next());
} catch (JRException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("-------------------------------------------------------------");
try {
//生成pdf文件
bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),null, ds);
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//pdf设置
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream;
try {
ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.write(0);
ouputStream.flush();
ouputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
------------------------------------------------------------------------------------------------------------html-----------------------------------------------------------------------------------------------------------------:
sSQL = String.format(sSQL, sWhere);
Connection con = null;
String strMessage="";
ResultSet rs=null;
response.setCharacterEncoding("UTF-8");
File reportFile = new File(request.getRealPath("/reports/jb7.jasper"));
if (!reportFile.exists())
throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first.");
JasperReport jasperReport = null;
try {
jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
} catch (JRException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Map parameters = new HashMap();
parameters.put("ReportTitle", "Address Report");
parameters.put("BaseDir", reportFile.getParentFile());
try
{
con = DBConnection.currentConnection();
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=stat.executeQuery(sSQL);
System.out.println(rs.next());
JRResultSetDataSource jrds = new JRResultSetDataSource(rs);
System.out.println("--------------------------------------------------");
System.out.println(jrds.next());
JasperPrint jasperPrint =
JasperFillManager.fillReport(
jasperReport,
parameters,
jrds
);
response.setContentType("text/html");
JRHtmlExporter exporter = new JRHtmlExporter();
PrintWriter out=response.getWriter();
request.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/test/images/px.");
exporter.exportReport();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
------------------------------------------------------------------------------------------------------------excel-----------------------------------------------------------------------------------------------------------------:
sSQL = String.format(sSQL, sWhere);
path= request.getRealPath("/reports/jb7.jasper");
System.out.println(path);
reportFile = new File(path);
try {
con = DBConnection.currentConnection();
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=stat.executeQuery(sSQL);
} catch (SQLException e1) {
}
JRDataSource dataSource=new JRResultSetDataSource(rs);
//生成EXCEL
try {
//这里注意参数传递,dataSource为数据源
jasperPrint = JasperFillManager.fillReport(reportFile.getPath(),null,dataSource);
JRXlsExporter exporter = new JRXlsExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); // 删除记录最下面的空行
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);// 删除多余的ColumnHeader
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);// 显示边框
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,baos);
exporter.exportReport();
//这里需要设置,数据没有填充进去,,待续........................
response.setContentType("application/vnd.ms-excel;charset=GB2312");
bytes = baos.toByteArray();
if (bytes != null && bytes.length > 0){
response.setCharacterEncoding("utf-8");
response.setContentLength(bytes.length);
ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
} catch (Exception e) {
}
return null;
这样在附上下面这句代码,就解决了图片**问题:
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/test/images/px.");
下面附上3种方式生成报表,都为struts2中execute方法代码,代码为部分核心:
------------------------------------------------------------------------------------------------------------pdf-----------------------------------------------------------------------------------------------------------------:
sSQL = String.format(sSQL, sWhere);
Connection con = null;
String strMessage="";
ResultSet rs=null;
//String path1=request.getContextPath();
//String path2="E://workspace//IreportDemo//WebRoot//report//SecondDemo.jasper";
String path= request.getRealPath("/reports/jb7.jasper");
System.out.println(path);
File reportFile = new File(path);
byte[] bytes=new byte[200];
try {
con = DBConnection.currentConnection();
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
// ResultSet rs=DBConnection.getConnection();
rs=stat.executeQuery(sSQL);
} catch (SQLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
JRResultSetDataSource ds = new JRResultSetDataSource(rs);
System.out.println("-------------------------------------------------------------");
try {
System.out.println(ds.next());
} catch (JRException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("-------------------------------------------------------------");
try {
//生成pdf文件
bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),null, ds);
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//pdf设置
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream;
try {
ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.write(0);
ouputStream.flush();
ouputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
------------------------------------------------------------------------------------------------------------html-----------------------------------------------------------------------------------------------------------------:
sSQL = String.format(sSQL, sWhere);
Connection con = null;
String strMessage="";
ResultSet rs=null;
response.setCharacterEncoding("UTF-8");
File reportFile = new File(request.getRealPath("/reports/jb7.jasper"));
if (!reportFile.exists())
throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first.");
JasperReport jasperReport = null;
try {
jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
} catch (JRException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Map parameters = new HashMap();
parameters.put("ReportTitle", "Address Report");
parameters.put("BaseDir", reportFile.getParentFile());
try
{
con = DBConnection.currentConnection();
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=stat.executeQuery(sSQL);
System.out.println(rs.next());
JRResultSetDataSource jrds = new JRResultSetDataSource(rs);
System.out.println("--------------------------------------------------");
System.out.println(jrds.next());
JasperPrint jasperPrint =
JasperFillManager.fillReport(
jasperReport,
parameters,
jrds
);
response.setContentType("text/html");
JRHtmlExporter exporter = new JRHtmlExporter();
PrintWriter out=response.getWriter();
request.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/test/images/px.");
exporter.exportReport();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
------------------------------------------------------------------------------------------------------------excel-----------------------------------------------------------------------------------------------------------------:
sSQL = String.format(sSQL, sWhere);
path= request.getRealPath("/reports/jb7.jasper");
System.out.println(path);
reportFile = new File(path);
try {
con = DBConnection.currentConnection();
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=stat.executeQuery(sSQL);
} catch (SQLException e1) {
}
JRDataSource dataSource=new JRResultSetDataSource(rs);
//生成EXCEL
try {
//这里注意参数传递,dataSource为数据源
jasperPrint = JasperFillManager.fillReport(reportFile.getPath(),null,dataSource);
JRXlsExporter exporter = new JRXlsExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); // 删除记录最下面的空行
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);// 删除多余的ColumnHeader
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);// 显示边框
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,baos);
exporter.exportReport();
//这里需要设置,数据没有填充进去,,待续........................
response.setContentType("application/vnd.ms-excel;charset=GB2312");
bytes = baos.toByteArray();
if (bytes != null && bytes.length > 0){
response.setCharacterEncoding("utf-8");
response.setContentLength(bytes.length);
ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
} catch (Exception e) {
}
return null;
相关文章推荐
- 软件开发辅助工具 -- Source Insight程序编辑器和代码浏览器
- c#开发的应用程序做退出程序的代码
- 用C#开发类似QQ输入法的不规则窗体的程序详解+代码打包分享
- c#开发的应用程序做退出程序的代码
- AppInventor:不需要编写一行代码开发Android程序
- 程序开发——代码的纪律军队化?
- 报表引擎API开发入门— EJB程序数据源
- Hibernate小程序关键代码
- 程序开发小技巧——格式化代码
- 必杀技公布——用特征码定位关键代码,秒杀MFC程序
- 必杀技公布——用特征码定位关键代码,秒杀MFC程序
- 发语音包红包小程序开发代码解析
- iOS开发UI篇—以微博界面为例使用纯代码自定义cell程序编码全过程(三·完结) - 文顶顶
- android与JAVAEE结合开发的关键代码(json与xml两种方法)
- C#程序开发中经常遇到的10条实用的代码
- 分享非常有用的Java程序 (关键代码) (二)---JavaSript获取上传文件路径的文件名
- IOS程序开发之禁止输入表情符号实例代码
- C#程序开发中经常遇到的10条实用的代码
- 分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小
- JAVA小程序开发之模拟电梯APP(代码优化)