Jasperreports+jaspersoft studio+springboot 制作报表

jaspersoft studio工具:Jaspersoft Studio是JasperReports库和JasperReports服务器的基于Eclipse的报告设计器; 它可以作为Eclipse插件或作为独立的应用程序使用。Jaspersoft Studio允许您创建包含图表,图像,子报表,交叉表等的复杂布局。您可以通过JDBC,TableModels,JavaBeans,XML,Hibernate,大数据(如Hive),CSV,XML / A以及自定义来源等各种来源访问数据,然后将报告发布为PDF,RTF, XML,XLS,CSV,HTML,XHTML,文本,DOCX或OpenOffice。

Jasperreports:JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。

安装jaspersoft studio

安装过程很简单,一直下一步就行,这里不做过多描述。工具下载地址:Jaspersoft® Studio | Jaspersoft Community

安装完成后主界面

Jasperreports+jaspersoft studio+springboot 制作报表_第1张图片

 

本文使用MySQL作为数据源,主要制作一个表格和柱形图同时存在的模板,并通过springboot + Jasperreports导出为PDF、Excel、Word等文档
处理报表中的中文显示问题
在设计报表之前,为了处理之后生成的PDF等文档中文乱码或者中文不显示等问题。

点击Window -》Preferences -》在搜索框搜索font

Jasperreports+jaspersoft studio+springboot 制作报表_第2张图片

 

点击add

Jasperreports+jaspersoft studio+springboot 制作报表_第3张图片

 

点击Finish

开始设计报表
创建项目
首先 File -》New -》Project

Jasperreports+jaspersoft studio+springboot 制作报表_第4张图片

 

选择JasperReports Project,点击Next

Jasperreports+jaspersoft studio+springboot 制作报表_第5张图片

 

为自己的项目起个名字,点击Finish

Jasperreports+jaspersoft studio+springboot 制作报表_第6张图片

 

再工具的左上方找到自己刚创建的项目

Jasperreports+jaspersoft studio+springboot 制作报表_第7张图片

创建模板

点击reportDemo1,右键New -》Jasper report

Jasperreports+jaspersoft studio+springboot 制作报表_第8张图片

 

选择一个模板,点击Next

Jasperreports+jaspersoft studio+springboot 制作报表_第9张图片

 

选中项目,同时为模板文件起一个名字。如report.jrxml,点击Finish

在工具左下方找到刚创建的模板

Jasperreports+jaspersoft studio+springboot 制作报表_第10张图片

正式开始编写模板

模板创建界面比较简单,此处不加以赘述!!!!

pom.xml

        

        
            net.sf.jasperreports
            jasperreports
            6.16.0
        
        
            com.lowagie
            itext
            2.1.7
        
        
            net.sf.jasperreports
            jasperreports-fonts
            6.16.0
        


项目目录结构


控制器代码
 

package com.nassoft.demoreport1.controller;
 
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.export.JRRtfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
 
@RestController
public class DemoReport1 {
    @Autowired
    private DataSource dataSource;
 
    @RequestMapping("/{reportName}")
    public void demoReport1(@PathVariable("reportName") final String reportName,
                            @RequestParam(required = false) Map parameters,
                            HttpServletResponse response, HttpServletRequest request) throws  Exception{
        parameters = parameters == null ? new HashMap<>() : parameters;
        //获取文件流
        ClassPathResource resource = new ClassPathResource("jaspers" + File.separator + reportName + ".jasper");
        InputStream jasperStream = resource.getInputStream();
 
        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource.getConnection());
 
        //在线预览PDF
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline;");
        final OutputStream outputStream = response.getOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
 
        //生成pdf文档
        /*String fileName = "F:/filename.pdf";
        JasperExportManager.exportReportToPdfFile(jasperPrint,fileName);*/
 
        //生成word文档
       /* String fileName = "F:/filename.doc";
        JRRtfExporter docExporter = new JRRtfExporter();
        docExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,fileName);
        docExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        docExporter.exportReport();*/
 
        //生成excel文档
        /*JRXlsExporter excel = new JRXlsExporter();
        System.out.println(request.getServletContext().getRealPath("jaspers/demoreport1.jasper"));
        String fileName = "F://filename.xls";
        excel.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,fileName);
        excel.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        excel.exportReport();*/
 
    }
}

 

 

你可能感兴趣的:(spring,boot,后端,java)