Jaspersoft 报表: 基于JDBC填充报表数据

    xiaoxiao2023-10-08  152

    第一步:在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>

    效果展示:

    最新回复(0)