java读取excel文件为base64实现方式

2025-09-24 00:50

本文主要是介绍java读取excel文件为base64实现方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意...

使用 Apache POI 读取 Excel 并转换为 Base64

Apache POI 是一个流行的 Java 库,用于操作 Microsoft Office 格式文件(如 Excel)。以下方法将 Excel 文件读取为字节数组,再转换为 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>

代码实现

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javajavascript.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 文件为字节数组
        FileInputStream fis = new FileInputStream(filePath);
        Workbook workbook = WorkbookFactory.create(fis);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        workbook.write(bos);
        byte[] excelBytes = bos.toByteArray();

        // 关闭资源
        bos.close();
        workbook.close();
        fis.close();

        // 转换为 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,其内存占用更低。

依赖配置(Maven)

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

代码实现

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 FileInputStrvHqrJueam(filePath)).sheet().doWrite();
        byte[] bytes = bos.toByteArray();
        bos.close();
        return Base64.getEncoder().encodeToString(phpbytes);
    }

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

注意事项

  • 文件格式支持:示例代码支持 .xlsx(Offiphpce 2007+)。若需处理 .xls(旧格式),需调整 WorkbookFactory 逻辑。
  • 内存管理:处理大文件时,确保及时关闭流(如 FileInputStreamWorkbook)。
  • Base64 换行:默认情况下 Base64.getEncoder() 不添加换行符。如需换行,改用 Base64.getMimeEncoder()

常见问题解决

乱码问题

确保文件路径正确,且 Excel 未被其他进程占用。若报 InvalidHeaderException,检查文件是否损坏。

性能优化

对于超大文件,建议分块读取或使用流式 API(如 EasyExcel 的 read 方法)。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。

这篇关于java读取excel文件为base64实现方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155996

相关文章

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

java时区时间转为UTC的代码示例和详细解释

《java时区时间转为UTC的代码示例和详细解释》作为一名经验丰富的开发者,我经常被问到如何将Java中的时间转换为UTC时间,:本文主要介绍java时区时间转为UTC的代码示例和详细解释,文中通... 目录前言步骤一:导入必要的Java包步骤二:获取指定时区的时间步骤三:将指定时区的时间转换为UTC时间步

Java 日志中 Marker 的使用示例详解

《Java日志中Marker的使用示例详解》Marker是SLF4J(以及Logback、Log4j2)提供的一个接口,它本质上是一个命名对象,你可以把它想象成一个可以附加到日志语句上的标签或戳... 目录什么是Marker?为什么使用Markejavascriptr?1. 精细化的过滤2. 触发特定操作3

深入浅出Java中的Happens-Before核心规则

《深入浅出Java中的Happens-Before核心规则》本文解析Java内存模型中的Happens-Before原则,解释其定义、核心规则及实际应用,帮助理解多线程可见性与有序性问题,掌握并发编程... 目录前言一、Happens-Before是什么?为什么需要它?1.1 从一个问题说起1.2 Haht

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

Spring定时任务之fixedRateString的实现示例

《Spring定时任务之fixedRateString的实现示例》本文主要介绍了Spring定时任务之fixedRateString的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录从毫秒到 Duration:为何要改变?核心:Java.time.Duration.parse

Java 中 Optional 的用法及最佳实践

《Java中Optional的用法及最佳实践》在Java开发中,空指针异常(NullPointerException)是开发者最常遇到的问题之一,本篇文章将详细讲解Optional的用法、常用方... 目录前言1. 什么是 Optional?主要特性:2. Optional 的基本用法2.1 创建 Opti

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke