当前位置:首页 > Java

java如何做报表

2026-03-18 17:44:52Java

使用JasperReports生成报表

JasperReports是一个流行的开源Java报表工具,支持多种数据源和输出格式(如PDF、Excel、HTML等)。需要引入依赖库如jasperreportscommons相关包。

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.20.0</version>
</dependency>

通过JRXML设计模板文件,编译后填充数据生成报表:

// 加载.jrxml模板并编译
JasperReport report = JasperCompileManager.compileReport("template.jrxml");

// 填充数据(Map或JDBC数据源)
JasperPrint print = JasperFillManager.fillReport(report, parameters, dataSource);

// 导出为PDF
JasperExportManager.exportReportToPdfFile(print, "output.pdf");

使用Apache POI处理Excel报表

Apache POI支持直接操作Excel文件(XLS/XLSX格式),适用于动态生成复杂表格。

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>

创建并写入Excel文件示例:

Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");

// 写入表头
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("姓名");
headerRow.createCell(1).setCellValue("年龄");

// 写入数据
Row dataRow = sheet.createRow(1);
dataRow.createCell(0).setCellValue("张三");
dataRow.createCell(1).setCellValue(25);

// 保存文件
try (FileOutputStream fos = new FileOutputStream("report.xlsx")) {
    workbook.write(fos);
}

使用iText PDF生成报表

iText库适合生成PDF格式的报表,支持表格、图表和水印等高级功能。

java如何做报表

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>

生成PDF基础示例:

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("report.pdf"));
document.open();

// 添加内容
document.add(new Paragraph("报表标题"));
document.add(new Paragraph("生成时间: " + new Date()));

// 创建表格
PdfPTable table = new PdfPTable(3);
table.addCell("项目");
table.addCell("数量");
table.addCell("单价");
table.addCell("电脑");
table.addCell("1");
table.addCell("5000");
document.add(table);

document.close();

使用JFreeChart创建图表报表

JFreeChart可用于生成柱状图、饼图等可视化报表组件。

<dependency>
    <groupId>org.jfree</groupId>
    <artifactId>jfreechart</artifactId>
    <version>1.5.3</version>
</dependency>

生成饼图并保存为图片:

java如何做报表

DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("产品A", 43);
dataset.setValue("产品B", 27);

JFreeChart chart = ChartFactory.createPieChart(
    "销售占比", dataset, true, true, false);

ChartUtils.saveChartAsPNG(new File("chart.png"), chart, 500, 300);

使用Spring Boot集成报表工具

在Spring Boot项目中可通过Thymeleaf或Freemarker模板引擎生成HTML报表,结合上述工具导出为其他格式。

配置Freemarker模板:

spring.freemarker.template-loader-path=classpath:/templates/

Controller中渲染并导出:

@GetMapping("/export")
public void exportReport(HttpServletResponse response) throws Exception {
    Map<String, Object> model = new HashMap<>();
    model.put("data", fetchData());

    // 渲染HTML
    String html = freemarkerTemplateEngine.process("report.ftl", model);

    // 转为PDF
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocumentFromString(html);
    renderer.layout();
    renderer.createPDF(outputStream);

    response.setContentType("application/pdf");
    response.getOutputStream().write(outputStream.toByteArray());
}

标签: 如何做报表
分享给朋友:

相关文章

react icon 如何做

react icon 如何做

在 React 中使用图标的方法 安装图标库 React 项目可以通过流行的图标库(如 react-icons)快速集成图标。运行以下命令安装: npm install react-icons…

react 如何做源码分析

react 如何做源码分析

理解React源码结构 React源码托管在GitHub上,主要分为packages目录,包含核心模块如react、react-dom、scheduler等。每个模块功能独立,通过协同工作实现整体功能…

react中如何做跳转

react中如何做跳转

使用 React Router 进行跳转 React Router 是 React 生态中最常用的路由管理库,支持页面跳转和动态路由。以下是几种常见的跳转方式: 安装 React Router n…

_react如何做性能优化

_react如何做性能优化

使用React.memo和useMemo优化组件渲染 React.memo用于缓存函数组件,避免不必要的重新渲染。只有当props发生变化时才会重新渲染。对于复杂计算,使用useMemo缓存计算结果,…

react如何做时间搜索框

react如何做时间搜索框

实现时间搜索框的基本步骤 在React中实现时间搜索框通常需要结合日期选择库(如react-datepicker)和状态管理。以下是一个完整的实现示例: 安装依赖库: npm instal…

react滚动分页插件如何做

react滚动分页插件如何做

实现React滚动分页的常用方法 使用Intersection Observer API监听滚动 在React组件中创建一个IntersectionObserver实例,观察页面底部的"哨兵"元素。当…