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应用程序中生成动态内容。
安装过程很简单,一直下一步就行,这里不做过多描述。工具下载地址:https://community.jaspersoft.com/project/jaspersoft-studio/releases
在设计报表之前,为了处理之后生成的PDF等文档中文乱码或者中文不显示等问题。
点击Window -》Preferences -》在搜索框搜索font
点击add
点击Finish
首先 File -》New -》Project
选择JasperReports Project,点击Next
为自己的项目起个名字,点击Finish
再工具的左上方找到自己刚创建的项目
点击小图标
点击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左键拖动至Summary区域
选中刚创建的数据集,点击Next
点击Next
点击Next
点击Finish
点击Preview预览
显示错误,点击Design返回,然后在工具右下角点击Report
再点击Preview预览
出现数据
点击table
单击选中单元格,逐个修改字体大小以及样式
其余单元格,逐一修改,修改后预览
将Chart控件左键拖入Summary区域
选择Bar Chart 点击Next
点击Finish
点击Preview预览
右键点击report1.jrxml -》Compile Report,生成report1,.jasper文件
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
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();*/
}
}
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