学习笔记(一)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

安装过程很简单,一直下一步就行,这里不做过多描述。工具下载地址:https://community.jaspersoft.com/project/jaspersoft-studio/releases

安装完成后主界面

学习笔记(一)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张图片

连接MySQL数据库

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第7张图片

点击小图标

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第8张图片

点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第9张图片

点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第10张图片

为链接取一个名字,并正确填写连接数据库的信息。点击Driver Classpath

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第11张图片

添加MySQL驱动,点击Test

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第12张图片

测试连接成功

点击Finish

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第13张图片

可以看到项目下出现了一个.xml文件

创建模板

点击reportDemo1,右键New -》Jasper report

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第14张图片

选择一个模板,点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第15张图片

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

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

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第16张图片

创建数据集

右键report1 -》Create Dataset

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第17张图片

点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第18张图片

选择刚创建的连接名

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第19张图片

编写sql语句,查询所需数据,点击Outline,点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第20张图片

将需要用到的字段移至右边,点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第21张图片

根据什么字段分组,这个根据自己需要添加,点击Finish

正式开始编写模板

模板界面

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第22张图片

因为制作的是表格和柱形图同一模板,所以只留下Summary区域,其他区域删除

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第23张图片

红框中的,右键Delete

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第24张图片

只剩下Summary区域,在工具右上角找到

添加table控件

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第25张图片

点击向下翻页,找到table,并将table左键拖动至Summary区域

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第26张图片

选中刚创建的数据集,点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第27张图片

点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第28张图片

点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第29张图片

点击Finish

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第30张图片

点击Preview预览

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第31张图片

显示错误,点击Design返回,然后在工具右下角点击Report

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第32张图片

再点击Preview预览

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第33张图片

出现数据

点击table

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第34张图片

单击选中单元格,逐个修改字体大小以及样式

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第35张图片

其余单元格,逐一修改,修改后预览

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第36张图片

添加柱形图

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第37张图片

将Chart控件左键拖入Summary区域

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第38张图片

选择Bar Chart 点击Next

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第39张图片

点击Finish

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第40张图片

点击Preview预览

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第41张图片

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第42张图片

右键点击report1.jrxml -》Compile Report,生成report1,.jasper文件

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第43张图片

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.5.RELEASE
         
    
    com.nassoft
    demoreport1
    0.0.1-SNAPSHOT
    demoreport1
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-jdbc
        

        
            org.springframework.boot
            spring-boot-starter-freemarker
        

        
            mysql
            mysql-connector-java
            runtime
        

        
            net.sf.jasperreports
            jasperreports
            6.6.0
        

        
            com.kevin
            myfont
            1.0.0
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            org.apache.poi
            poi
            3.17
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


项目目录结构

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表_第44张图片

控制器代码

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();*/

    }
}

application.properties

server.port=8080

spring.http.encoding.charset=utf-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

如有错误之处,还请各位大佬指正

 

 

 

 

 

你可能感兴趣的:(学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表)