最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC框架使用 Apache POI實(shí)現(xiàn)導(dǎo)出Excel

 更新時(shí)間:2025年04月23日 08:21:28   作者:牛肉胡辣湯  
Excel 作為最常用的數(shù)據(jù)處理工具之一,經(jīng)常被用來(lái)存儲(chǔ)和展示數(shù)據(jù),本文將介紹如何在 SpringMVC 框架中使用 Apache POI 庫(kù)來(lái)實(shí)現(xiàn) Excel 文件的導(dǎo)出功能,有需要的可以參考一下

在企業(yè)級(jí)應(yīng)用開(kāi)發(fā)中,數(shù)據(jù)的導(dǎo)入導(dǎo)出是一項(xiàng)常見(jiàn)的需求。Excel 作為最常用的數(shù)據(jù)處理工具之一,經(jīng)常被用來(lái)存儲(chǔ)和展示數(shù)據(jù)。本文將介紹如何在 SpringMVC 框架中使用 Apache POI 庫(kù)來(lái)實(shí)現(xiàn) Excel 文件的導(dǎo)出功能。

1.引入

1.1 添加依賴(lài)

首先,在項(xiàng)目的 ??pom.xml?? 文件中添加 Apache POI 的依賴(lài):

<dependencies>
    <!-- 其他依賴(lài) -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
</dependencies>

1.2 創(chuàng)建 Maven 項(xiàng)目

確保你的項(xiàng)目是一個(gè) Maven 項(xiàng)目,并且已經(jīng)配置好了 SpringMVC 框架。

2. 創(chuàng)建控制器

接下來(lái),我們創(chuàng)建一個(gè)控制器來(lái)處理導(dǎo)出 Excel 的請(qǐng)求。

package com.example.controller;
 
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
 
@Controller
@RequestMapping("/excel")
public class ExcelController {
 
    @GetMapping("/export")
    public void exportExcel(HttpServletResponse response) throws IOException {
        // 設(shè)置響應(yīng)頭
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("用戶信息", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
 
        // 創(chuàng)建工作簿
        Workbook workbook = new XSSFWorkbook();
        // 創(chuàng)建工作表
        Sheet sheet = workbook.createSheet("用戶信息");
        // 創(chuàng)建標(biāo)題行
        Row headerRow = sheet.createRow(0);
        List<String> headers = Arrays.asList("ID", "姓名", "年齡", "郵箱");
        for (int i = 0; i < headers.size(); i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(headers.get(i));
        }
 
        // 填充數(shù)據(jù)
        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());
            row.createCell(3).setCellValue(user.getEmail());
        }
 
        // 輸出 Excel 文件
        workbook.write(response.getOutputStream());
        workbook.close();
    }
 
    private List<User> getUsers() {
        return Arrays.asList(
                new User(1, "張三", 28, "zhangsan@example.com"),
                new User(2, "李四", 30, "lisi@example.com"),
                new User(3, "王五", 25, "wangwu@example.com")
        );
    }
}
 
class User {
    private int id;
    private String name;
    private int age;
    private String email;
 
    public User(int id, String name, int age, String email) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.email = email;
    }
 
    public int getId() {
        return id;
    }
 
    public String getName() {
        return name;
    }
 
    public int getAge() {
        return age;
    }
 
    public String getEmail() {
        return email;
    }
}

3. 配置 SpringMVC

確保你的 ??web.xml?? 或 ??SpringMVC?? 配置文件中已經(jīng)配置了 DispatcherServlet 和相關(guān)組件。

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

4. 測(cè)試導(dǎo)出功能

啟動(dòng)你的應(yīng)用服務(wù)器,訪問(wèn)以下 URL 來(lái)測(cè)試導(dǎo)出功能:

http://localhost:8080/your-app/excel/export

如果一切正常,你應(yīng)該會(huì)看到瀏覽器提示你下載一個(gè)名為“用戶信息.xlsx”的 Excel 文件。

5. 方法補(bǔ)充

下面是一個(gè)使用 Spring MVC 和 Apache POI 導(dǎo)出 Excel 文件的示例代碼。這個(gè)示例假設(shè)你已經(jīng)有一個(gè) Spring Boot 項(xiàng)目,并且需要從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)并將其導(dǎo)出為 Excel 文件。

1. 添加依賴(lài)

首先,在你的 `pom.xml` 文件中添加 Apache POI 的依賴(lài):

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

2. 創(chuàng)建實(shí)體類(lèi)

假設(shè)你有一個(gè) ??User?? 實(shí)體類(lèi),表示用戶信息:

public class User {
    private Long id;
    private String name;
    private String email;
    private int age;
 
    // Getters and Setters
}

3. 創(chuàng)建服務(wù)類(lèi)

創(chuàng)建一個(gè)服務(wù)類(lèi)來(lái)處理數(shù)據(jù)的獲取和 Excel 文件的生成:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
 
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
 
@Service
public class UserService {
 
    // 假設(shè)這里有一個(gè)方法從數(shù)據(jù)庫(kù)中獲取用戶列表
    public List<User> getUsers() {
        // 這里可以調(diào)用 DAO 或 Repository 來(lái)獲取數(shù)據(jù)
        return List.of(
            new User(1L, "張三", "zhangsan@example.com", 28),
            new User(2L, "李四", "lisi@example.com", 30)
        );
    }
 
    public ByteArrayInputStream exportUsersToExcel() throws IOException {
        List<User> users = getUsers();
 
        try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream()) {
            Sheet sheet = workbook.createSheet("Users");
 
            // 創(chuàng)建表頭
            Row headerRow = sheet.createRow(0);
            headerRow.createCell(0).setCellValue("ID");
            headerRow.createCell(1).setCellValue("Name");
            headerRow.createCell(2).setCellValue("Email");
            headerRow.createCell(3).setCellValue("Age");
 
            // 填充數(shù)據(jù)
            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.getEmail());
                row.createCell(3).setCellValue(user.getAge());
            }
 
            workbook.write(out);
            return new ByteArrayInputStream(out.toByteArray());
        }
    }
}

4. 創(chuàng)建控制器

創(chuàng)建一個(gè)控制器來(lái)處理 HTTP 請(qǐng)求并返回 Excel 文件:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.io.ByteArrayInputStream;
import java.io.IOException;
 
@RestController
@RequestMapping("/api/users")
public class UserController {
 
    @Autowired
    private UserService userService;
 
    @GetMapping("/export-excel")
    public ResponseEntity<ByteArrayResource> exportUsersToExcel() throws IOException {
        ByteArrayInputStream bis = userService.exportUsersToExcel();
 
        // 設(shè)置響應(yīng)頭
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Disposition", "attachment; filename=users.xlsx");
 
        return ResponseEntity
                .ok()
                .headers(headers)
                .contentLength(bis.available())
                .body(new ByteArrayResource(bis.readAllBytes()));
    }
}

5. 配置應(yīng)用

確保你的 ??application.properties?? 或 ??application.yml?? 文件中沒(méi)有沖突的配置。

6. 測(cè)試

啟動(dòng)你的 Spring Boot 應(yīng)用,然后訪問(wèn) ??http://localhost:8080/api/users/export-excel??,你應(yīng)該會(huì)下載到一個(gè)名為 ??users.xlsx?? 的 Excel 文件,其中包含用戶數(shù)據(jù)。

以上代碼展示了如何在 Spring MVC 中使用 Apache POI 導(dǎo)出 Excel 文件。你可以根據(jù)實(shí)際需求調(diào)整數(shù)據(jù)源和服務(wù)邏輯。在使用Spring MVC框架結(jié)合Apache POI庫(kù)來(lái)實(shí)現(xiàn)Excel文件的導(dǎo)出功能時(shí),通常需要以下幾個(gè)步驟:

添加依賴(lài):確保項(xiàng)目中已經(jīng)引入了Spring MVC和Apache POI的相關(guān)依賴(lài)。

創(chuàng)建Excel處理類(lèi):編寫(xiě)一個(gè)類(lèi)來(lái)處理Excel文件的生成邏輯。

控制器層:在Spring MVC的控制器中調(diào)用上述類(lèi)的方法,并設(shè)置響應(yīng)頭以觸發(fā)文件下載。

1. 添加依賴(lài)

首先,在你的??pom.xml??文件中添加Apache POI的依賴(lài):

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

2. 創(chuàng)建Excel處理類(lèi)

接下來(lái),創(chuàng)建一個(gè)類(lèi)來(lái)處理Excel文件的生成。例如,創(chuàng)建一個(gè)名為??ExcelExporter??的類(lèi):

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
 
public class ExcelExporter {
 
    public void export(List<Map<String, Object>> data, HttpServletResponse response) throws IOException {
        // 創(chuàng)建一個(gè)新的工作簿
        Workbook workbook = new XSSFWorkbook();
        // 創(chuàng)建一個(gè)工作表
        Sheet sheet = workbook.createSheet("Data");
 
        // 創(chuàng)建標(biāo)題行
        Row headerRow = sheet.createRow(0);
        int columnCount = 0;
        for (String key : data.get(0).keySet()) {
            Cell cell = headerRow.createCell(columnCount++);
            cell.setCellValue(key);
        }
 
        // 填充數(shù)據(jù)
        int rowCount = 1;
        for (Map<String, Object> record : data) {
            Row row = sheet.createRow(rowCount++);
            columnCount = 0;
            for (String key : record.keySet()) {
                Cell cell = row.createCell(columnCount++);
                Object value = record.get(key);
                if (value instanceof String) {
                    cell.setCellValue((String) value);
                } else if (value instanceof Integer) {
                    cell.setCellValue((Integer) value);
                } else if (value instanceof Double) {
                    cell.setCellValue((Double) value);
                }
                // 可以根據(jù)需要添加更多的類(lèi)型處理
            }
        }
 
        // 設(shè)置響應(yīng)頭
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment; filename=data.xlsx");
 
        // 寫(xiě)入響應(yīng)輸出流
        workbook.write(response.getOutputStream());
        workbook.close();
    }
}

3. 控制器層

在Spring MVC的控制器中,調(diào)用??ExcelExporter??的??export??方法,并設(shè)置響應(yīng)頭以觸發(fā)文件下載:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
@Controller
public class ExcelController {
 
    @GetMapping("/export")
    public void export(HttpServletResponse response) throws IOException {
        List<Map<String, Object>> data = new ArrayList<>();
        // 示例數(shù)據(jù)
        Map<String, Object> record1 = new HashMap<>();
        record1.put("Name", "John Doe");
        record1.put("Age", 30);
        record1.put("Email", "john.doe@example.com");
 
        Map<String, Object> record2 = new HashMap<>();
        record2.put("Name", "Jane Smith");
        record2.put("Age", 25);
        record2.put("Email", "jane.smith@example.com");
 
        data.add(record1);
        data.add(record2);
 
        ExcelExporter exporter = new ExcelExporter();
        exporter.export(data, response);
    }
}

總結(jié)

通過(guò)上述步驟,你可以在Spring MVC應(yīng)用中實(shí)現(xiàn)Excel文件的導(dǎo)出功能。這個(gè)過(guò)程包括添加必要的依賴(lài)、創(chuàng)建處理Excel文件的類(lèi)以及在控制器中調(diào)用該類(lèi)的方法并設(shè)置響應(yīng)頭以觸發(fā)文件下載。

以上就是SpringMVC框架使用 Apache POI實(shí)現(xiàn)導(dǎo)出Excel的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC POI導(dǎo)出Excel的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringCloud中的分布式鎖用法示例詳解(Java+Redis SETNX命令)

    SpringCloud中的分布式鎖用法示例詳解(Java+Redis SETNX命令)

    在Spring Cloud項(xiàng)目中,使用Java和Redis結(jié)合實(shí)現(xiàn)的分布式鎖可以確保訂單的一致性和并發(fā)控制,分布式鎖的使用能夠在多個(gè)實(shí)例同時(shí)提交訂單時(shí),僅有一個(gè)實(shí)例可以成功進(jìn)行操作,本文給大家介紹Spring,Cloud中的分布式鎖用法詳解(Java+Redis SETNX命令),感興趣的朋友一起看看吧
    2023-10-10
  • 使用sharding-jdbc實(shí)現(xiàn)水平分表的示例代碼

    使用sharding-jdbc實(shí)現(xiàn)水平分表的示例代碼

    本文主要介紹了sharding-jdbc實(shí)現(xiàn)水平分表,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 基于SpringBoot+Pcap4j實(shí)現(xiàn)網(wǎng)絡(luò)流量抓包與實(shí)時(shí)分析

    基于SpringBoot+Pcap4j實(shí)現(xiàn)網(wǎng)絡(luò)流量抓包與實(shí)時(shí)分析

    在現(xiàn)代企業(yè)網(wǎng)絡(luò)環(huán)境中,網(wǎng)絡(luò)故障排查、性能監(jiān)控、安全審計(jì)等需求日益增長(zhǎng),本文將詳細(xì)介紹如何使用?Spring?Boot?+?Pcap4j?構(gòu)建一個(gè)功能完整的網(wǎng)絡(luò)流量抓包與分析系統(tǒng),感興趣的小伙伴可以了解下
    2025-08-08
  • java泛型類(lèi)的定義與使用詳解

    java泛型類(lèi)的定義與使用詳解

    這篇文章主要為大家詳細(xì)介紹了java泛型類(lèi)定義與使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 解決springboot mapper注入報(bào)紅問(wèn)題

    解決springboot mapper注入報(bào)紅問(wèn)題

    這篇文章主要介紹了解決springboot mapper注入報(bào)紅問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • springboot相互依賴(lài) server相互引用方式

    springboot相互依賴(lài) server相互引用方式

    這篇文章主要介紹了springboot相互依賴(lài) server相互引用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 使用SpringMVC的@Validated注解驗(yàn)證的實(shí)現(xiàn)

    使用SpringMVC的@Validated注解驗(yàn)證的實(shí)現(xiàn)

    這篇文章主要介紹了使用SpringMVC的@Validated注解驗(yàn)證的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java使用easyExcel實(shí)現(xiàn)Excel文件解析

    Java使用easyExcel實(shí)現(xiàn)Excel文件解析

    這篇文章主要為大家詳細(xì)介紹了Java如何使用easyExcel實(shí)現(xiàn)Excel文件解析,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Springboot項(xiàng)目基于Devtools實(shí)現(xiàn)熱部署步驟詳解

    Springboot項(xiàng)目基于Devtools實(shí)現(xiàn)熱部署步驟詳解

    這篇文章主要介紹了Springboot項(xiàng)目基于Devtools實(shí)現(xiàn)熱部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java Collections的emptyList、EMPTY_LIST詳解與使用說(shuō)明

    Java Collections的emptyList、EMPTY_LIST詳解與使用說(shuō)明

    這篇文章主要介紹了Java Collections的emptyList、EMPTY_LIST詳解與使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評(píng)論

滁州市| 巴楚县| 宁海县| 霍林郭勒市| 五原县| 宜阳县| 任丘市| 克拉玛依市| 灵璧县| 朝阳县| 普定县| 商河县| 昌图县| 清水县| 绩溪县| 衡阳县| 阿尔山市| 进贤县| 台中市| 淄博市| 宁海县| 南平市| 都江堰市| 鹿泉市| 海林市| 廉江市| 左贡县| 托克逊县| 梅河口市| 怀集县| 四川省| 鸡泽县| 太原市| 深州市| SHOW| 石家庄市| 靖州| 手机| 贺兰县| 保山市| 海口市|