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

SpringBoot項目實現(xiàn)Excel上傳功能的示例代碼

 更新時間:2025年09月17日 09:44:17   作者:悟能不能悟  
這篇文章主要為大家詳細介紹了SpringBoot項目中實現(xiàn)Excel上傳功能的相關方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

在Spring Boot項目中實現(xiàn)Excel上傳功能,可以通過以下步驟完成。這里使用Apache POI庫處理Excel文件,并結(jié)合Spring MVC的文件上傳功能。

步驟 1:添加依賴

pom.xml中添加以下依賴:

<!-- Spring Boot Web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Apache POI for Excel -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version> <!-- 使用最新版本 -->
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

步驟 2:配置文件上傳

application.properties中添加:

# 文件上傳大小限制
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

步驟 3:創(chuàng)建實體類

假設Excel包含用戶數(shù)據(jù):

public class User {
    private String name;
    private Integer age;
    private String email;
    
    // Getters and Setters
}

步驟 4:實現(xiàn)Excel解析工具類

import org.apache.poi.ss.usermodel.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;

public class ExcelUtil {
    
    public static List<User> parseExcelFile(MultipartFile file) throws Exception {
        List<User> users = new ArrayList<>();
        
        Workbook workbook = WorkbookFactory.create(file.getInputStream());
        Sheet sheet = workbook.getSheetAt(0); // 獲取第一個工作表
        
        for (Row row : sheet) {
            if (row.getRowNum() == 0) continue; // 跳過表頭
            
            User user = new User();
            user.setName(getStringValue(row.getCell(0)));
            user.setAge(getIntValue(row.getCell(1)));
            user.setEmail(getStringValue(row.getCell(2)));
            
            users.add(user);
        }
        workbook.close();
        return users;
    }
    
    private static String getStringValue(Cell cell) {
        return cell == null ? "" : cell.getStringCellValue();
    }
    
    private static Integer getIntValue(Cell cell) {
        return cell == null ? null : (int) cell.getNumericCellValue();
    }
}

步驟 5:創(chuàng)建Controller

import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/api/excel")
public class ExcelUploadController {

    @PostMapping("/upload")
    public ResponseEntity<String> uploadExcel(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return ResponseEntity.badRequest().body("文件為空");
        }
        
        try {
            List<User> users = ExcelUtil.parseExcelFile(file);
            // 這里處理業(yè)務邏輯(如保存到數(shù)據(jù)庫)
            // userService.saveUsers(users);
            return ResponseEntity.ok("成功導入 " + users.size() + " 條數(shù)據(jù)");
        } catch (Exception e) {
            return ResponseEntity.internalServerError().body("導入失敗: " + e.getMessage());
        }
    }
}

步驟 6:前端調(diào)用示例(HTML)

<form action="/api/excel/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" accept=".xlsx, .xls">
    <button type="submit">上傳Excel</button>
</form>

高級優(yōu)化建議

異步處理?:

@Async
public void processExcelAsync(MultipartFile file) {
    // 耗時操作
}

批量插入數(shù)據(jù)庫?:

// 使用JPA批量保存
@Transactional
public void saveUsers(List<User> users) {
    userRepository.saveAll(users);
}

?驗證Excel格式?:

if (!file.getOriginalFilename().endsWith(".xlsx")) {
    throw new IllegalArgumentException("僅支持.xlsx格式");
}

?使用監(jiān)聽器模式(大文件處理)??:

考慮使用EasyExcel庫(阿里開源)處理百萬級數(shù)據(jù):

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

處理流程

  1. 前端提交表單 →
  2. Controller接收文件 →
  3. 工具類解析Excel →
  4. 轉(zhuǎn)換為對象列表 →
  5. 執(zhí)行業(yè)務邏輯(如存入數(shù)據(jù)庫)

常見問題解決

  • ?亂碼問題?:確保Excel保存為UTF-8格式
  • ?日期格式?:使用DateUtil.getJavaDate(cell.getNumericCellValue())
  • ?內(nèi)存溢出?:對大文件使用SXSSFWorkbook或EasyExcel的流式讀取

通過以上實現(xiàn),你可以快速在Spring Boot項目中集成Excel上傳功能,并根據(jù)實際需求擴展數(shù)據(jù)處理邏輯。

到此這篇關于SpringBoot項目實現(xiàn)Excel上傳功能的示例代碼的文章就介紹到這了,更多相關SpringBoot Excel上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mybatis實現(xiàn)聯(lián)表查詢并且分頁功能

    Mybatis實現(xiàn)聯(lián)表查詢并且分頁功能

    這篇文章主要介紹了Mybatis實現(xiàn)聯(lián)表查詢并且分頁功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 在CentOS系統(tǒng)中檢測Java安裝及運行jar應用的方法

    在CentOS系統(tǒng)中檢測Java安裝及運行jar應用的方法

    這篇文章主要介紹了在CentOS系統(tǒng)中檢測Java安裝及運行jar應用的方法,同樣適用于Fedora等其他RedHat系的Linux系統(tǒng),需要的朋友可以參考下
    2015-06-06
  • Nacos與SpringBoot實現(xiàn)配置管理的開發(fā)實踐

    Nacos與SpringBoot實現(xiàn)配置管理的開發(fā)實踐

    在微服務架構(gòu)中,配置管理是一個核心組件,而Nacos為此提供了一個強大的解決方案,本文主要介紹了Nacos與SpringBoot實現(xiàn)配置管理的開發(fā)實踐,具有一定的參考價值
    2023-08-08
  • java volatile關鍵字使用方法及注意事項

    java volatile關鍵字使用方法及注意事項

    這篇文章主要介紹了java volatile關鍵字使用方法及注意事項的相關資料,當一個變量被聲明為 volatile 后,java 內(nèi)存模型確保所有使用該變量的線程能看到相同的、一致的值。,需要的朋友可以參考下
    2017-07-07
  • 在Map中實現(xiàn)key唯一不重復操作

    在Map中實現(xiàn)key唯一不重復操作

    這篇文章主要介紹了在Map中實現(xiàn)key唯一不重復操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring?BeanPostProcessor后處理器源碼解析

    Spring?BeanPostProcessor后處理器源碼解析

    這篇文章主要介紹了Spring?BeanPostProcessor后處理器源碼解析,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-09-09
  • Java正則表達式API邊界匹配

    Java正則表達式API邊界匹配

    這篇文章主要介紹了Java正則表達式API邊界匹配,文章圍繞主題展開相應的相關資料,具有一定的參考價值,需要的朋友可以參考一下
    2022-06-06
  • 詳解Springboot+React項目跨域訪問問題

    詳解Springboot+React項目跨域訪問問題

    這篇文章主要介紹了詳解Springboot+React項目跨域訪問問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • JPA原生SQL(自定義SQL)分頁查詢邏輯詳解

    JPA原生SQL(自定義SQL)分頁查詢邏輯詳解

    這篇文章主要介紹了JPA原生SQL(自定義SQL)分頁查詢邏輯詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java中的引用類型之強軟弱虛詳解

    java中的引用類型之強軟弱虛詳解

    這篇文章主要給大家介紹了關于java中引用類型之強軟弱虛的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-06-06

最新評論

漾濞| 霸州市| 乌兰浩特市| 合江县| 寻乌县| 宝鸡市| 南通市| 平远县| 西峡县| 南康市| 佛冈县| 渝中区| 蒙自县| 新田县| 普兰店市| 昌黎县| 新疆| 景德镇市| 剑河县| 晋宁县| 兴文县| 津市市| 石家庄市| 绥阳县| 天镇县| 炎陵县| 玉屏| 靖江市| 波密县| 长葛市| 博乐市| 安溪县| 山阳县| 乌拉特前旗| 建德市| 平顶山市| 通榆县| 荥经县| 北安市| 建德市| 色达县|