第一步:在Jaspersoft Studio工具中新建JDBC数据源
然后Next ,选择 Database JDBC Connection.
点击Test 显示 Successful! ,然后Finish!
第二步: 新建报表模板
1、新建报表模板人report3.jrxml,只保留Title Band 和 Detail Band.
2、模板右键 -> Dataset and QueryDialog
点击OK 后,在outline中生成Field.
将id,name等拖入到 Detail 1 Band中设计模板如下:
点击preview ,显示如下:
二、通过SpringBoot程序,使用JDBC作为数据源生成报表
核心代码:
package com.zzg.report; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import net.sf.jasperreports.engine.JasperRunManager; @Controller @RequestMapping("/api/jdbc") public class JDBCController { @RequestMapping("/{reportName}") public void getReportByParam(@PathVariable("reportName") final String reportName, HttpServletResponse response) { ServletOutputStream sosRef = null; // jdbc 连接获取 try { String url = "jdbc:mysql://****:3306/boot-setting?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true"; Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, "root", "****"); // 获取文件流 ClassPathResource resource = new ClassPathResource("jaspers" + File.separator + reportName + ".jasper"); InputStream jasperStream = resource.getInputStream(); sosRef = response.getOutputStream(); JasperRunManager.runReportToPdfStream(jasperStream, sosRef, null, conn); response.setContentType("application/pdf"); } catch (Exception e) { e.printStackTrace(); } finally { try { sosRef.flush(); sosRef.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }pom 文件核心依赖包:
<!-- 报表系统:JasperReports --> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.6.0</version> </dependency> <!-- 中文字体文件 --> <dependency> <groupId>com.zzg.report</groupId> <artifactId>font</artifactId> <version>1.0.0</version> </dependency>效果展示:
