第一步:在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>
效果展示: