在WEB客户端直接打印JasperReport报表

Start 2010-05-25 07:24:04
请问,谁有在WEB客户端直接打印JasperReport报表这种示例,最近公司业务要求,需要实现这个功能,网上找了很多资料都没搞定,如果谁有的话希望能发一个给我,谢谢哈
...全文
164 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycnanevol 2010-05-26
  • 打赏
  • 举报
回复
转PDF的servlet


import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import cn.bstar.gale.boss.framework.SpringContextUtil;

public class PdfServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// 创建response输出流,设置response回应的头部
ByteArrayOutputStream baos = new ByteArrayOutputStream();

res.setContentType("application/pdf");
// 得到request中设置的属性值
Map map = (Map) req.getAttribute("Map");
String file = ((String) req.getAttribute("file")).trim();
ServletContext servletContext = getServletContext();
InputStream is = null;
Connection conn = null;
DataSource ds = (DataSource) SpringContextUtil.getBean("dataSource");
try {
conn = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
try {
is = servletContext.getResourceAsStream(file);
} catch (Exception e) {

}
if (is == null) {
res.setContentType("text/html");
res.setCharacterEncoding("gb2312");
PrintWriter outHtml = res.getWriter();
outHtml.println("<html>");
outHtml.println("<body bgcolor=\"white\">");
outHtml.println("<span class=\"bold\">文件" + file + "不存在</span>");
outHtml.println("</body>");
outHtml.println("</html>");
outHtml.close();
} else {

JasperPrint jasperPrint = null;
try {
jasperPrint = JasperFillManager.fillReport(is, map, conn);
} catch (Exception e) {
e.printStackTrace();
}
if (jasperPrint == null) {
res.setContentType("text/html");
res.setCharacterEncoding("gb2312");
PrintWriter outHtml = res.getWriter();
outHtml.println("<html>");
outHtml.println("<body bgcolor=\"white\">");
outHtml.println("<span class=\"bold\">数据库查询失败,表或者视图不存在</span>");
outHtml.println("</body>");
outHtml.println("</html>");
outHtml.close();

} else {
if (jasperPrint.getPages().size() == 0) {
res.setContentType("text/html");
res.setCharacterEncoding("gb2312");
PrintWriter outHtml = res.getWriter();
outHtml.println("<html>");
outHtml.println("<body bgcolor=\"white\">");
outHtml.println("<span class=\"bold\">没有查询结果</span>");
outHtml.println("</body>");
outHtml.println("</html>");
outHtml.close();
} else {
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
baos);
try {
exporter.exportReport();
} catch (JRException e) {
throw new ServletException(e);
}
byte[] bytes = baos.toByteArray();
if (bytes != null && bytes.length > 0) {
res.setContentType("application/pdf");
res.setContentLength(bytes.length);
ServletOutputStream ouputStream = res.getOutputStream();

try {
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
} finally {
if (ouputStream != null) {
try {
ouputStream.close();
} catch (IOException ex) {
}
}
}
} else {
res.setContentType("text/html");
res.setCharacterEncoding("gb2312");
PrintWriter outHtml = res.getWriter();
outHtml.println("<html>");
outHtml.println("<body bgcolor=\"white\">");
outHtml.println("<span class=\"bold\">没有查询结果</span>");
outHtml.println("</body>");
outHtml.println("</html>");
outHtml.close();
}
}
}
}
try {
conn.close();
} catch (SQLException e) {

}
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req, res);
}

@Override
public void init() throws ServletException {
System.setProperty("java.awt.headless", "true");
}

}



CSV的

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRXlsAbstractExporterParameter;
import cn.bstar.gale.boss.framework.SpringContextUtil;

public class CsvServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;



@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// 得到request中设置的属性值
Map map = (Map) req.getAttribute("Map");
String sourceFileName = ((String) req.getAttribute("file")).trim();
ServletContext servletContext = getServletContext();
// 获得数据库连接
Connection conn = null;
DataSource ds = (DataSource) SpringContextUtil.getBean("dataSource");
try {
conn = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
// 获得文件输入流
InputStream is = null;
try {
is = servletContext.getResourceAsStream(sourceFileName);
} catch (Exception e) {

}
// 判断文件输入流是否为空,如果为空,说明文件不存在
if (is == null) {
res.setContentType("text/html");
res.setCharacterEncoding("gb2312");
PrintWriter outHtml = res.getWriter();
outHtml.println("<html>");
outHtml.println("<body bgcolor=\"white\">");
outHtml.println("<span class=\"bold\">文件" + sourceFileName
+ "不存在</span>");
outHtml.println("</body>");
outHtml.println("</html>");
outHtml.close();
}
// 文件输入流不为空,说明文件存在,填充报表
else {
JasperPrint jasperPrint = null;
try {
jasperPrint = JasperFillManager.fillReport(is, map, conn);
} catch (Exception e) {

}
// 如果
if (jasperPrint == null) {
res.setContentType("text/html");
res.setCharacterEncoding("gb2312");
PrintWriter outHtml = res.getWriter();
outHtml.println("<html>");
outHtml.println("<body bgcolor=\"white\">");
outHtml.println("<span class=\"bold\">数据库查询失败,表或者视图不存在</span>");
outHtml.println("</body>");
outHtml.println("</html>");
outHtml.close();

} else {
if (jasperPrint.getPages().size() == 0) {
res.setContentType("text/html");
res.setCharacterEncoding("gb2312");
PrintWriter outHtml = res.getWriter();
outHtml.println("<html>");
outHtml.println("<body bgcolor=\"white\">");
outHtml.println("<span class=\"bold\">没有查询结果</span>");
outHtml.println("</body>");
outHtml.println("</html>");
outHtml.close();
} else {

JRCsvExporter exporter = new JRCsvExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);

ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
baos);
exporter.setParameter(
JRExporterParameter.CHARACTER_ENCODING, "gb2312");
exporter
.setParameter(
JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET,
Boolean.FALSE);
exporter
.setParameter(
JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND,
Boolean.FALSE);
exporter.setParameter(JRXlsAbstractExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
Boolean.TRUE);
try {
exporter.exportReport();
} catch (JRException e) {
throw new ServletException(e);
}
byte[] bytes = baos.toByteArray();

if (bytes != null && bytes.length > 0) {
res.setContentType("application/vnd.ms-excel");
res.setHeader("Content-Disposition",
"inline; filename=" + jasperPrint.getName()
+ ".csv");
res.setContentLength(bytes.length);
ServletOutputStream ouputStream = res.getOutputStream();

try {
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
} finally {
if (ouputStream != null) {
try {
ouputStream.close();
} catch (IOException ex) {
}
}
}
} else {
res.setContentType("text/html");
res.setCharacterEncoding("gb2312");
PrintWriter outHtml = res.getWriter();
outHtml.println("<html>");
outHtml.println("<body bgcolor=\"white\">");
outHtml.println("<span class=\"bold\">没有查询结果</span>");
outHtml.println("</body>");
outHtml.println("</html>");
outHtml.close();
}
}
}
}
try {
conn.close();
} catch (SQLException e) {
}
}


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req, res);
}
@Override
public void init() throws ServletException {
System.setProperty("java.awt.headless", "true");
}

}
rumlee 2010-05-26
  • 打赏
  • 举报
回复
JasperReport好像有在web端用的applet。
japt88_115656292 2010-05-26
  • 打赏
  • 举报
回复
这个我有。不过貌似我要找下。告诉你李刚疯狂java专门讲这一章的。
你去书店翻翻书吧

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧