java讀取excel文件為base64實現(xiàn)方式
使用 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)建線程池的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
使用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)變量,需要的朋友可以參考下2016-01-01
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開發(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
解決spring-boot-maven-plugin報紅的問題
這篇文章主要給大家介紹一下如何解決spring-boot-maven-plugin報紅的問題,文中通過圖文講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下2023-08-08

