0
点赞
收藏
分享

微信扫一扫

java 结合 jsp 实现 导出页面table数据为Excel

GhostInMatrix 2024-10-10 阅读 20

在 Java Web 应用中,结合 JSP 和 Java Servlet 技术导出页面中的表格数据到 Excel 文件是一个常见的需求。下面是一个简单的示例,展示如何实现这一功能。

1. 准备环境

确保项目中包含以下依赖:

  • Apache POI:用于生成 Excel 文件。
  • Servlet API:用于处理 HTTP 请求。

可以通过 Maven 或者手动下载这些依赖。以下是 Maven 依赖配置:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

2. 创建 Servlet 处理导出请求

创建一个 Servlet 来处理导出请求,并生成 Excel 文件。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/export")
public class ExportServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置响应头
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment; filename=exported_data.xlsx");

        // 创建工作簿和工作表
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Data");

        // 创建表头
        Row headerRow = sheet.createRow(0);
        String[] headers = {"ID", "Name", "Age"};
        for (int i = 0; i < headers.length; i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(headers[i]);
        }

        // 假设这是从数据库获取的数据
        List<User> users = getUsers();

        // 填充数据
        int rowNum = 1;
        for (User user : users) {
            Row row = sheet.createRow(rowNum++);
            row.createCell(0).setCellValue(user.getId());
            row.createCell(1).setCellValue(user.getName());
            row.createCell(2).setCellValue(user.getAge());
        }

        // 输出 Excel 文件
        OutputStream outputStream = response.getOutputStream();
        workbook.write(outputStream);
        workbook.close();
        outputStream.flush();
        outputStream.close();
    }

    private List<User> getUsers() {
        List<User> users = new ArrayList<>();
        users.add(new User(1, "Alice", 30));
        users.add(new User(2, "Bob", 25));
        users.add(new User(3, "Charlie", 35));
        return users;
    }
}

class User {
    private int id;
    private String name;
    private int age;

    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

3. 创建 JSP 页面

创建一个 JSP 页面,包含一个按钮,用户点击该按钮时触发导出操作。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Export Table to Excel</title>
</head>
<body>
    <h1>Table Data</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
        </tr>
        <tr>
            <td>1</td>
            <td>Alice</td>
            <td>30</td>
        </tr>
        <tr>
            <td>2</td>
            <td>Bob</td>
            <td>25</td>
        </tr>
        <tr>
            <td>3</td>
            <td>Charlie</td>
            <td>35</td>
        </tr>
    </table>
    <br>
    <a href="export">Export to Excel</a>
</body>
</html>

4. 部署和测试

将项目部署到Web 容器(如 Tomcat),启动服务器,访问 JSP 页面,点击“Export to Excel”链接,应该会下载一个包含表格数据的 Excel 文件。

以上就是一个简单的示例,展示了如何在 Java Web 应用中结合 JSP 和 Servlet 技术导出页面中的表格数据到 Excel 文件。可以根据实际需求进行扩展和优化。

举报

相关推荐

0 条评论