首页 >excel操作 > 内容

学习笔记(一)Jasperreports+jaspersoft studio+springboot 制作报表

2023年1月14日 21:21

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

安装完成后主界面

本文使用MySQL作为数据源,主要制作一个表格和柱形图同时存在的模板,并通过springboot +Jasperreports导出为PDF、Excel、Word等文档

处理报表中的中文显示问题

在设计报表之前,为了处理之后生成的PDF等文档中文乱码或者中文不显示等问题。

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

点击add

点击Finish

开始设计报表

创建项目

首先 File -》New -》Project

选择JasperReports Project,点击Next

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

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

连接MySQL数据库

点击小图标

点击Next

点击Next

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

添加MySQL驱动,点击Test

测试连接成功

点击Finish

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

创建模板

点击reportDemo1,右键New -》Jasper report

选择一个模板,点击Next

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

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

创建数据集

右键report1 -》Create Dataset

点击Next

选择刚创建的连接名

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

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

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

正式开始编写模板

模板界面

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

红框中的,右键Delete

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

添加table控件

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

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

点击Next

点击Next

点击Finish

点击Preview预览

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

再点击Preview预览

出现数据

点击table

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

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

添加柱形图

将Chart控件左键拖入Summary区域

选择Bar Chart 点击Next

点击Finish

点击Preview预览

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

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.1.5.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.nassoft</groupId>    <artifactId>demoreport1</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>demoreport1</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-jdbc</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-freemarker</artifactId>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <scope>runtime</scope>        </dependency>        <dependency>            <groupId>net.sf.jasperreports</groupId>            <artifactId>jasperreports</artifactId>            <version>6.6.0</version>        </dependency>        <dependency>            <groupId>com.kevin</groupId>            <artifactId>myfont</artifactId>            <version>1.0.0</version>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi</artifactId>            <version>3.17</version>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

项目目录结构

控制器代码

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;@RestControllerpublic class DemoReport1 {    @Autowired    private DataSource dataSource;    @RequestMapping("/{reportName}")    public void demoReport1(@PathVariable("reportName") final String reportName,                            @RequestParam(required = false) Map<String, Object> 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=8080spring.http.encoding.charset=utf-8spring.http.encoding.enabled=truespring.http.encoding.force=truespring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8spring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver

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


参考文章:https://blog.csdn.net/qq_40224651/article/details/92764220

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论