欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

在Spring Boot項(xiàng)目中實(shí)現(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)建實(shí)體類

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

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

步驟 4:實(shí)現(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è)務(wù)邏輯(如保存到數(shù)據(jù)庫)
            // userService.saveUsers(users);
            return ResponseEntity.ok("成功導(dǎo)入 " + users.size() + " 條數(shù)據(jù)");
        } catch (Exception e) {
            return ResponseEntity.internalServerError().body("導(dǎo)入失敗: " + 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);
}

?驗(yàn)證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è)務(wù)邏輯(如存入數(shù)據(jù)庫)

常見問題解決

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

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

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

相關(guān)文章

  • java獲取中文拼音首字母工具類定義與用法實(shí)例

    java獲取中文拼音首字母工具類定義與用法實(shí)例

    這篇文章主要介紹了java獲取中文拼音首字母工具類定義與用法,結(jié)合實(shí)例形式分析了java獲取中文拼音首字母工具類的具體定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • 深入了解java.util.Arrays的使用技巧

    深入了解java.util.Arrays的使用技巧

    在這篇文章中,我們將來帶大家看看?java.util.Arrays?,我們可以使用?Arrays?創(chuàng)建,比較,排序,搜索,stream?和轉(zhuǎn)化數(shù)組,感興趣的小伙伴可以了解一下
    2023-02-02
  • springboot+vue?若依項(xiàng)目在windows2008R2企業(yè)版部署流程分析

    springboot+vue?若依項(xiàng)目在windows2008R2企業(yè)版部署流程分析

    這篇文章主要介紹了springboot+vue?若依項(xiàng)目在windows2008R2企業(yè)版部署流程,本次使用jar包啟動后端,故而準(zhǔn)備打包后的jar文件,需要的朋友可以參考下
    2022-12-12
  • 排序算法的Java實(shí)現(xiàn)全攻略

    排序算法的Java實(shí)現(xiàn)全攻略

    這篇文章主要介紹了排序算法的Java實(shí)現(xiàn),包括Collections.sort()的使用以及各種經(jīng)典算法的Java代碼實(shí)現(xiàn)方法總結(jié),超級推薦!需要的朋友可以參考下
    2015-08-08
  • JS實(shí)現(xiàn)冒泡排序,插入排序和快速排序并排序輸出

    JS實(shí)現(xiàn)冒泡排序,插入排序和快速排序并排序輸出

    這篇文章主要介紹了JS實(shí)現(xiàn)冒泡排序,插入排序和快速排序并從input文本框中獲取內(nèi)容進(jìn)行排序輸出,需要的朋友可以參考下
    2015-07-07
  • InterlliJ IDEA2020新建java web項(xiàng)目找不到Static Web的解決

    InterlliJ IDEA2020新建java web項(xiàng)目找不到Static Web的解決

    這篇文章主要介紹了InterlliJ IDEA2020新建java web項(xiàng)目找不到Static Web的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java中Lambda表達(dá)式的使用詳解

    Java中Lambda表達(dá)式的使用詳解

    Lambda 表達(dá)式,也可稱為閉包,它是推動 Java 8 發(fā)布的最重要新特性。Lambda 允許把函數(shù)作為一個方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)。使用 Lambda 表達(dá)式可以使代碼變的更加簡潔緊湊
    2021-09-09
  • 淺試仿?mapstruct實(shí)現(xiàn)微服務(wù)編排框架詳解

    淺試仿?mapstruct實(shí)現(xiàn)微服務(wù)編排框架詳解

    這篇文章主要為大家介紹了淺試仿?mapstruct實(shí)現(xiàn)微服務(wù)編排框架詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java 代碼實(shí)例解析設(shè)計(jì)模式之監(jiān)聽者模式

    Java 代碼實(shí)例解析設(shè)計(jì)模式之監(jiān)聽者模式

    所謂監(jiān)聽者模式,我理解的是構(gòu)建一個容器存放所有被監(jiān)聽的線程或?qū)ο?,監(jiān)聽每個線程或?qū)ο蟀l(fā)生的變化,若某個線程或?qū)ο笥|發(fā)指定規(guī)則,那么則對所有被監(jiān)聽的線程或?qū)ο蟾鶕?jù)業(yè)務(wù)需要做處理
    2021-10-10
  • windows系統(tǒng)上如何進(jìn)行maven安裝和配置方式

    windows系統(tǒng)上如何進(jìn)行maven安裝和配置方式

    這篇文章主要介紹了windows系統(tǒng)上如何進(jìn)行maven安裝和配置方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論