速览体育网

Good Luck To You!

Java中报表导出方法有哪些?哪种方式最适合我的需求?

Java中报表导出方法详解

Java中报表导出方法有哪些?哪种方式最适合我的需求?

在Java开发中,报表导出是一个常见的功能,它允许用户将数据以表格的形式导出为不同的文件格式,如Excel、PDF等,以下是几种常用的Java报表导出方法。

使用Apache POI导出Excel报表

Apache POI是Java中处理Microsoft Office文档的一个开源库,可以用来创建和操作Excel文件。

添加依赖

在项目的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.2</version>
</dependency>

创建Excel报表

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelExport {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("报表");
        // 创建表头
        Row header = sheet.createRow(0);
        header.createCell(0).setCellValue("姓名");
        header.createCell(1).setCellValue("年龄");
        header.createCell(2).setCellValue("性别");
        // 添加数据
        for (int i = 1; i <= 10; i++) {
            Row row = sheet.createRow(i);
            row.createCell(0).setCellValue("张三" + i);
            row.createCell(1).setCellValue(20 + i);
            row.createCell(2).setCellValue("男");
        }
        // 写入文件
        FileOutputStream outputStream = new FileOutputStream("报表.xlsx");
        workbook.write(outputStream);
        workbook.close();
        outputStream.close();
    }
}

下载文件

通过Spring MVC的控制器,将生成的Excel文件以附件的形式返回给客户端。

Java中报表导出方法有哪些?哪种方式最适合我的需求?

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
@Controller
public class ExcelDownloadController {
    @GetMapping("/downloadExcel")
    @ResponseBody
    public void downloadExcel(HttpServletResponse response) throws IOException {
        // 调用ExcelExport类的main方法生成Excel文件
        // ...
        // 设置响应头
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment;filename=报表.xlsx");
        // 写入文件到客户端
        OutputStream outputStream = response.getOutputStream();
        workbook.write(outputStream);
        workbook.close();
        outputStream.close();
    }
}

使用Apache PDFBox导出PDF报表

Apache PDFBox是一个开源的Java库,用于创建和操作PDF文件。

添加依赖

在项目的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.18</version>
</dependency>

创建PDF报表

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.FileOutputStream;
import java.io.IOException;
public class PDFExport {
    public static void main(String[] args) throws IOException {
        PDDocument document = new PDDocument();
        PDPage page = new PDPage();
        document.addPage(page);
        PDPageContentStream contentStream = new PDPageContentStream(document, page);
        contentStream.setFont(PDType1Font.HELVETICA, 12);
        contentStream.beginText();
        contentStream.newLineAtOffset(100, 700);
        contentStream.showText("姓名:张三");
        contentStream.newLine();
        contentStream.showText("年龄:20");
        contentStream.newLine();
        contentStream.showText("性别:男");
        contentStream.endText();
        contentStream.close();
        FileOutputStream outputStream = new FileOutputStream("报表.pdf");
        document.save(outputStream);
        document.close();
        outputStream.close();
    }
}

下载文件

与Excel导出类似,通过Spring MVC的控制器将生成的PDF文件以附件的形式返回给客户端。

使用JasperReports导出报表

Java中报表导出方法有哪些?哪种方式最适合我的需求?

JasperReports是一个开源的Java报表库,可以生成多种格式的报表。

添加依赖

在项目的pom.xml文件中添加以下依赖:

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

创建JasperReports报表

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class JasperReportsExport {
    public static void main(String[] args) throws IOException {
        File file = new File("src/main/resources/report/jasperreport_template.jrxml");
        JasperReport jasperReport = JasperCompileManager.compileReport(file);
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("reportTitle", "报表标题");
        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(/* 数据源 */);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
        // 生成PDF
        JasperExportManager.exportReportToPdfFile(jasperPrint, "报表.pdf");
        // 生成Excel
        JasperExportManager.exportReportToExcelFile(jasperPrint, "报表.xlsx");
    }
}

下载文件

与前面两种方法类似,通过Spring MVC的控制器将生成的PDF和Excel文件以附件的形式返回给客户端。

本文介绍了Java中报表导出的几种常用方法,包括使用Apache POI导出Excel报表、使用Apache PDFBox导出PDF报表以及使用JasperReports导出报表,在实际开发中,可以根据需求选择合适的方法来实现报表导出功能。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2026年2月    »
1
2345678
9101112131415
16171819202122
232425262728
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.4

Copyright Your WebSite.Some Rights Reserved.