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

java讀取excel文件為base64實現(xiàn)方式

 更新時間:2025年09月21日 15:55:21   作者:night_gu  
文章介紹使用ApachePOI和EasyExcel處理Excel文件并轉(zhuǎn)換為Base64的方法,強(qiáng)調(diào)EasyExcel適合大文件且內(nèi)存占用低,需注意文件格式支持、流關(guān)閉、Base64編碼方式選擇及常見問題處理,如亂碼、文件損壞等,同時建議優(yōu)化性能時采用分塊讀取

使用 Apache POI 讀取 Excel 并轉(zhuǎn)換為 Base64

Apache POI 是一個流行的 Java 庫,用于操作 Microsoft Office 格式文件(如 Excel)。以下方法將 Excel 文件讀取為字節(jié)數(shù)組,再轉(zhuǎn)換為 Base64 字符串。

依賴配置(Maven)

<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>

代碼實現(xiàn)

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Base64;

public class ExcelToBase64 {

    public static String convertExcelToBase64(String filePath) throws IOException {
        // 讀取 Excel 文件為字節(jié)數(shù)組
        FileInputStream fis = new FileInputStream(filePath);
        Workbook workbook = WorkbookFactory.create(fis);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        workbook.write(bos);
        byte[] excelBytes = bos.toByteArray();

        // 關(guān)閉資源
        bos.close();
        workbook.close();
        fis.close();

        // 轉(zhuǎn)換為 Base64
        return Base64.getEncoder().encodeToString(excelBytes);
    }

    public static void main(String[] args) {
        try {
            String base64 = convertExcelToBase64("example.xlsx");
            System.out.println("Base64: " + base64);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 EasyExcel 處理大文件

若需處理大型 Excel 文件,可以使用阿里開源的 EasyExcel,其內(nèi)存占用更低。

依賴配置(Maven)

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

代碼實現(xiàn)

import com.alibaba.excel.EasyExcel;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Base64;

public class ExcelToBase64Easy {

    public static String convertToBase64(String filePath) throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        EasyExcel.write(bos).withTemplate(new FileInputStream(filePath)).sheet().doWrite();
        byte[] bytes = bos.toByteArray();
        bos.close();
        return Base64.getEncoder().encodeToString(bytes);
    }

    public static void main(String[] args) throws IOException {
        String base64 = convertToBase64("large_file.xlsx");
        System.out.println("Base64: " + base64.substring(0, 50) + "...");
    }
}

注意事項

  • 文件格式支持:示例代碼支持 .xlsx(Office 2007+)。若需處理 .xls(舊格式),需調(diào)整 WorkbookFactory 邏輯。
  • 內(nèi)存管理:處理大文件時,確保及時關(guān)閉流(如 FileInputStream、Workbook)。
  • Base64 換行:默認(rèn)情況下 Base64.getEncoder() 不添加換行符。如需換行,改用 Base64.getMimeEncoder()。

常見問題解決

亂碼問題

確保文件路徑正確,且 Excel 未被其他進(jìn)程占用。若報 InvalidHeaderException,檢查文件是否損壞。

性能優(yōu)化

對于超大文件,建議分塊讀取或使用流式 API(如 EasyExcel 的 read 方法)。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 火遍全網(wǎng)的Hutool使用Builder模式創(chuàng)建線程池的方法

    火遍全網(wǎng)的Hutool使用Builder模式創(chuàng)建線程池的方法

    這篇文章主要介紹了火遍全網(wǎng)的Hutool使用Builder模式創(chuàng)建線程池的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java如何判斷字符串中是否包含某個字符

    Java如何判斷字符串中是否包含某個字符

    這篇文章主要介紹了Java如何判斷字符串中是否包含某個字符,可以使用String類的contains()方法,另一種方法使用String類的indexOf方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • 使用Java將Excel轉(zhuǎn)換為Text的實現(xiàn)方法

    使用Java將Excel轉(zhuǎn)換為Text的實現(xiàn)方法

    在日常的數(shù)據(jù)處理和系統(tǒng)集成中,我們經(jīng)常會遇到需要將Excel文件中的數(shù)據(jù)提取出來,并以純文本格式進(jìn)行處理的場景,將Excel轉(zhuǎn)換為Text是一項基礎(chǔ)而重要的任務(wù),本文將向您介紹如何利用強(qiáng)大的 Spire.XLS for Java 庫,在Java應(yīng)用程序中輕松實現(xiàn)Excel到Text的轉(zhuǎn)換
    2025-10-10
  • Spring不能注入Static變量的原因及Spring注入靜態(tài)變量

    Spring不能注入Static變量的原因及Spring注入靜態(tài)變量

    這篇文章主要介紹了Spring不能注入Static變量的原因及Spring注入靜態(tài)變量,需要的朋友可以參考下
    2016-01-01
  • Java中Integer的parseInt和valueOf的區(qū)別詳解

    Java中Integer的parseInt和valueOf的區(qū)別詳解

    這篇文章主要介紹了Java中Integer的parseInt和valueOf的區(qū)別詳解,nteger.parseInt(s)是把字符串解析成int基本類型,Integer.valueOf(s)是把字符串解析成Integer對象類型,其實int就是Integer解包裝,Integer就是int的包裝,需要的朋友可以參考下
    2023-11-11
  • Java多線程之Callable接口的實現(xiàn)

    Java多線程之Callable接口的實現(xiàn)

    這篇文章主要介紹了Java多線程之Callable接口的實現(xiàn),Callable和Runnbale一樣代表著任務(wù),區(qū)別在于Callable有返回值并且可以拋出異常。感興趣的小伙伴們可以參考一下
    2018-08-08
  • Spring JPA整合QueryDSL的示例代碼

    Spring JPA整合QueryDSL的示例代碼

    這篇文章主要介紹了Spring JPA整合QueryDSL的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • java開發(fā)web前端cookie session及token會話機(jī)制詳解

    java開發(fā)web前端cookie session及token會話機(jī)制詳解

    如果把人體比作一個web系統(tǒng)的話,cookie、session和token就好像人體的經(jīng)絡(luò)和血管一樣,而web系統(tǒng)中的數(shù)據(jù),就好像人體的血液一樣。血液依靠著血管在人體內(nèi)流動,就如數(shù)據(jù)根據(jù)cookie和session機(jī)制在web系統(tǒng)中流動一樣
    2021-10-10
  • Java并發(fā)中線程封閉知識點詳解

    Java并發(fā)中線程封閉知識點詳解

    在本篇文章里我們給大家整理了關(guān)于Java并發(fā)中線程封閉的知識點總結(jié)內(nèi)容,需要的朋友們學(xué)習(xí)參考下。
    2019-07-07
  • 解決spring-boot-maven-plugin報紅的問題

    解決spring-boot-maven-plugin報紅的問題

    這篇文章主要給大家介紹一下如何解決spring-boot-maven-plugin報紅的問題,文中通過圖文講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2023-08-08

最新評論

安福县| 长乐市| 夹江县| 友谊县| 重庆市| 敖汉旗| 盐亭县| 丰宁| 余干县| 博湖县| 衢州市| 黄梅县| 彰化市| 大庆市| 鸡东县| 密山市| 崇明县| 高密市| 海口市| 辰溪县| 武城县| 湘潭县| 黄山市| 乌兰察布市| 平舆县| 临颍县| 大丰市| 无锡市| 都安| 桂平市| 阜阳市| 灵寿县| 钦州市| 武平县| 徐水县| 射洪县| 青阳县| 宾川县| 安乡县| 左云县| 陆良县|