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

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

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

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

Apache POI 是一個(gè)流行的 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>

代碼實(shí)現(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>

代碼實(shí)現(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) + "...");
    }
}

注意事項(xiàng)

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

常見問題解決

亂碼問題

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

性能優(yōu)化

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

總結(jié)

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

相關(guān)文章

  • Windows 下安裝配置 Eclipse詳細(xì)教程

    Windows 下安裝配置 Eclipse詳細(xì)教程

    Eclipse是一款非常優(yōu)秀的開源IDE,非常適合Java開發(fā),由于支持插件技術(shù),受到了越來越多的開發(fā)者的歡迎。配合眾多令人眼花繚亂的插件,完全可以滿足從企業(yè)級(jí)Java應(yīng)用到手機(jī)終端Java游戲的開發(fā)。本文將帶您手把手步入Eclipse的廣闊天地
    2016-09-09
  • Java實(shí)現(xiàn)FTP上傳到服務(wù)器

    Java實(shí)現(xiàn)FTP上傳到服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)FTP上傳到服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • SpringBoot整合ShardingSphere5.x實(shí)現(xiàn)數(shù)據(jù)加解密功能(最新推薦)

    SpringBoot整合ShardingSphere5.x實(shí)現(xiàn)數(shù)據(jù)加解密功能(最新推薦)

    這篇文章主要介紹了SpringBoot整合ShardingSphere5.x實(shí)現(xiàn)數(shù)據(jù)加解密功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • list的4種遍歷方式(實(shí)例講解)

    list的4種遍歷方式(實(shí)例講解)

    下面小編就為大家?guī)硪黄猯ist的4種遍歷方式(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Spring Boot整合RabbitMQ實(shí)例(Topic模式)

    Spring Boot整合RabbitMQ實(shí)例(Topic模式)

    Topic Exchange 轉(zhuǎn)發(fā)消息主要是根據(jù)通配符。接下來通過本文給大家分享Spring Boot整合RabbitMQ實(shí)例(Topic模式),需要的朋友參考下吧
    2017-04-04
  • java實(shí)現(xiàn)文件上傳下載至ftp服務(wù)器

    java實(shí)現(xiàn)文件上傳下載至ftp服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件上傳下載至ftp服務(wù)器的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • SpringAOP 如何通過JoinPoint獲取參數(shù)名和值

    SpringAOP 如何通過JoinPoint獲取參數(shù)名和值

    這篇文章主要介紹了SpringAOP 通過JoinPoint獲取參數(shù)名和值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • javax.validation包里@NotNull等注解的使用方式

    javax.validation包里@NotNull等注解的使用方式

    這篇文章主要介紹了javax.validation包里@NotNull等注解的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 基于SpringBoot加載Mybatis的TypeAlias問題

    基于SpringBoot加載Mybatis的TypeAlias問題

    這篇文章主要介紹了解決SpringBoot加載Mybatis的TypeAlias問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java創(chuàng)建與結(jié)束線程代碼示例

    Java創(chuàng)建與結(jié)束線程代碼示例

    這篇文章主要介紹了Java創(chuàng)建與結(jié)束線程代碼示例,小編覺得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10

最新評(píng)論