springboot 使用jasperreports实现excel
时间: 2023-12-09 18:06:11 浏览: 192
springboot整合JasperReport实现报表功能
5星 · 资源好评率100%
可以使用 JasperReports Library 来生成 Excel 报表,Spring Boot 与 JasperReports 的集成非常简单,只需要在 Maven 中添加 JasperReports 的依赖即可。下面是实现的步骤:
1. 添加 JasperReports 的 Maven 依赖:
```xml
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.17.0</version>
</dependency>
```
2. 创建一个 JasperReport 模板文件,使用 Jaspersoft Studio 或者 iReport Designer 都可以。在模板文件中设计好报表的样式和布局。
3. 创建一个 Java 类,用于生成 Excel 报表。在类中使用 JasperReports 的 API 来加载模板文件并填充数据。
```java
@Service
public class ReportService {
public byte[] generateReport(List<User> users) throws JRException {
// 加载 JasperReport 模板文件
InputStream reportStream = this.getClass().getResourceAsStream("/reports/users.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(reportStream);
// 填充数据
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(users);
Map<String, Object> params = new HashMap<>();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
// 导出为 Excel 报表
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));
exporter.exportReport();
return outputStream.toByteArray();
}
}
```
4. 在 Controller 中调用 ReportService 类的 generateReport 方法来生成 Excel 报表。
```java
@RestController
public class UserController {
@Autowired
private ReportService reportService;
@GetMapping("/users/report")
public ResponseEntity<byte[]> generateReport() throws JRException {
List<User> users = // 查询用户数据
byte[] reportBytes = reportService.generateReport(users);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", "users.xlsx");
return new ResponseEntity<>(reportBytes, headers, HttpStatus.OK);
}
}
```
这样,当访问 /users/report 接口时,会返回一个名为 users.xlsx 的 Excel 报表文件。
阅读全文