当前位置:首页 > 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如何做弹窗

react如何做弹窗

使用 React 创建弹窗的方法 使用 React 内置状态管理 通过 React 的 useState 钩子控制弹窗的显示与隐藏,结合条件渲染实现弹窗效果。 import { useSta…

react如何做规划

react如何做规划

React 项目规划方法 明确项目目标和需求 在开始开发前,需要清晰地定义项目的目标和需求。列出核心功能、用户交互流程和预期的用户体验。撰写详细的需求文档或用户故事,确保团队成员对目标有统一理解。…

_react如何做性能优化

_react如何做性能优化

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

react里如何做路由拦截

react里如何做路由拦截

路由拦截的实现方法 在React中实现路由拦截通常涉及以下两种主流方案,适用于不同场景需求: 使用React Router的导航守卫 React Router v6+版本推荐采用<Naviga…

react里面如何做axios拦截

react里面如何做axios拦截

在React中使用Axios拦截器可以统一处理请求和响应,例如添加认证头、错误处理等。以下是具体实现方法: 创建Axios实例并设置拦截器 import axios from 'axios'…

js实现pdf报表

js实现pdf报表

使用 jsPDF 生成 PDF 报表 jsPDF 是一个流行的 JavaScript 库,用于在客户端生成 PDF 文件。它支持文本、表格、图片等内容的添加。 安装 jsPDF: npm inst…