開發工具
ireport 5.6.0
jasperreports 6.0.0
maven中引入jasperreport的jar
<!-- jasperreports-->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-pdfa</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.2.2</version>
</dependency>
導出pdf(方法一)
/**
* 導出pdf
* @param request
* @param response
*/
@RequestMapping(value = "/exportPdf.do")
public void exportPdf(HttpServletRequest request, HttpServletResponse response){
response.setCharacterEncoding("UTF-8");
ServletContext servletContext = request.getSession().getServletContext();
String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
OutputStream out=null;
Connection conn = null;
try{
out =response.getOutputStream();
conn = dataSource.getConnection();
//得到jasper檔案
JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
//null可以改成 map參數
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
//設定響應頭 以檔案的方式傳回
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("我的pdf","utf8"));
JRPdfExporter exporter = new JRPdfExporter();
JasperReportsUtils.render(exporter, jasperPrint,out);
}catch(Exception e){
e.printStackTrace();
}finally{
{
try {
conn.close();
out.flush();
out.close();
}catch(SQLException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
導出pdf(方法二)
将上面方法中的
JRPdfExporter exporter = new JRPdfExporter();
JasperReportsUtils.render(exporter, jasperPrint,out);
去掉,添加
JasperExportManager.exportReportToPdfStream(jasperPrint, out);
導出pdf(方法三)
/**
* 導出pdf3
* @param request
* @param response
*/
@RequestMapping(value = "/exportPdf3.do")
public void exportPdf3(HttpServletRequest request, HttpServletResponse response){
response.setCharacterEncoding("UTF-8");
ServletContext servletContext = request.getSession().getServletContext();
String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
OutputStream out=null;
Connection conn = null;
try{
out =response.getOutputStream();
conn = dataSource.getConnection();
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("我的pdf","utf8"));
//null可以改成 map參數
byte[] bytes = JasperRunManager.runReportToPdf(root_path, null,conn);
response.setContentLength(bytes.length);
out.write(bytes,0,bytes.length);
}catch(Exception e){
e.printStackTrace();
}finally{
{
try {
conn.close();
out.flush();
out.close();
}catch(SQLException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
導出pdf(方法四)
/**
* 導出pdf4
* @param request
* @param response
*/
@RequestMapping(value = "/exportPdf4.do")
public void exportPdf4(HttpServletRequest request, HttpServletResponse response){
response.setCharacterEncoding("UTF-8");
ServletContext servletContext = request.getSession().getServletContext();
String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
OutputStream out=null;
Connection conn = null;
try{
out =response.getOutputStream();
conn = dataSource.getConnection();
//得到jasper檔案
JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("我的pdf","utf8"));
JRPdfExporter exporter = new JRPdfExporter();
//設定輸入項
ExporterInput exporterInput = new SimpleExporterInput(jasperPrint);
exporter.setExporterInput(exporterInput);
//設定輸出項
OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(response.getOutputStream());
exporter.setExporterOutput(exporterOutput);
exporter.exportReport();
}catch(Exception e){
e.printStackTrace();
}finally{
{
try {
conn.close();
out.flush();
out.close();
}catch(SQLException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
導出excel
/**
* 導出Ecxel
* @param request
* @param response
* @param path
* @param reportName
*/
@RequestMapping(value = "/exportExcel.do")
public void exportExcel(HttpServletRequest request, HttpServletResponse response){
response.setCharacterEncoding("UTF-8");
ServletContext servletContext = request.getSession().getServletContext();
String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
OutputStream os=null;
Connection conn = null;
try{
os = response.getOutputStream();
conn = dataSource.getConnection();
//得到jasper檔案
JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
JRXlsxExporter exporter = new JRXlsxExporter();
//設定輸入項
ExporterInput exporterInput = new SimpleExporterInput(jasperPrint);
exporter.setExporterInput(exporterInput);
//設定輸出項
OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(response.getOutputStream());
exporter.setExporterOutput(exporterOutput);
//設定響應方式
String generateFileName = "我的檔案.xlsx";
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode(generateFileName,"utf8"));
exporter.exportReport();
}catch(Exception e){
e.printStackTrace();
}finally{
try {
conn.close();
os.flush();
os.close();
} catch (SQLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
導出WORD
/**
* 導出word
* @param request
* @param response
* @param path
* @param reportName
*/
@RequestMapping(value = "/exportWord.do")
public void exportWord(HttpServletRequest request, HttpServletResponse response){
response.setCharacterEncoding("UTF-8");
ServletContext servletContext = request.getSession().getServletContext();
String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
OutputStream out=null;
Connection conn = null;
try{
out =response.getOutputStream();
conn = dataSource.getConnection();
//得到jasper檔案
JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
response.setContentType("application/msword");
response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("我的word","utf8"));
JRDocxExporter exporter = new JRDocxExporter();
JasperReportsUtils.render(exporter, jasperPrint,out);
}catch(Exception e){
e.printStackTrace();
}finally{
{
try {
conn.close();
out.flush();
out.close();
}catch(SQLException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
導出html
/**
* 導出html
* @param request
* @param response
* @param path
* @param reportName
*/
@RequestMapping(value = "/exportHtml.do")
public void exportHtml(HttpServletRequest request, HttpServletResponse response ){
response.setCharacterEncoding("UTF-8");
ServletContext servletContext = request.getSession().getServletContext();
String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
OutputStream os=null;
Connection conn = null;
try{
os = response.getOutputStream();
conn = dataSource.getConnection();
//得到jasper檔案
JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
JRAbstractExporter exporter = new JRHtmlExporter();
response.reset();
response.setContentType("text/html");
response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode("我的html","utf8"));
JasperReportsUtils.render(exporter, jasperPrint,os);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
conn.close();
os.flush();
os.close();
} catch (SQLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}