Java 实现 Excel 转 HTML:完整示例

引言

在 Web 应用开发中,经常需要将 Excel 报表以网页形式展示,便于在线预览或嵌入系统。本文将介绍如何在 Java 中使用免费库 Free Spire.XLS for Java 将 Excel 文件转换为 HTML 格式,包含整个工作簿转换、指定工作表转换、图片嵌入等实用场景。代码简洁,无需安装 Microsoft Office。

环境配置

1. 添加依赖(Maven)

在项目的 pom.xml 中添加以下仓库和依赖:

xml 复制代码
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls.free</artifactId>
    <version>16.3.1</version>
</dependency>

如果不使用 Maven,可手动下载 Jar 包导入项目。

基础转换:整个 Excel 工作簿转 HTML

该方案可将 Excel 文件(支持.xls/.xlsx)完整转换为 HTML,保留单元格样式、合并单元格、图片等基础格式:

代码:

java 复制代码
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;

public class ExcelToHtml {
    public static void main(String[] args) {
        // 1. 加载 Excel 文档
        Workbook workbook = new Workbook();
        workbook.loadFromFile("sample.xlsx");

        // 2. 保存为 HTML
        workbook.saveToFile("output/whole_workbook.html", FileFormat.HTML);
        System.out.println("转换完成!");
    }
}

运行后,生成的 HTML 会保留 Excel 中的多个 Sheet,浏览器中可通过底部的标签页切换。

进阶:转换指定工作表并嵌入图片

有时只需要导出某个特定工作表(如"销售数据"),并且希望表格中的图片直接嵌入 HTML(而非外部链接),可使用 HTMLOptions 类进行配置。

代码:

java 复制代码
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import com.spire.xls.core.spreadsheet.HTMLOptions;

public class SheetToHtmlWithImage {
    public static void main(String[] args) {
        // 1. 加载 Excel
        Workbook workbook = new Workbook();
        workbook.loadFromFile("product.xlsx");

        // 2. 获取第一个工作表
        Worksheet sheet = workbook.getWorksheets().get(0);

        // 3. 设置 HTML 选项:图片嵌入
        HTMLOptions options = new HTMLOptions();
        options.setImageEmbedded(true); // true 表示将图片转为 base64 嵌入 HTML

        // 4. 保存指定工作表为 HTML
        sheet.saveToHtml("output/single_sheet.html", options);
        System.out.println("单个工作表转换成功,图片已嵌入。");
    }
}

通过 setImageEmbedded(true),图片数据直接写入 HTML,分享单个文件即可显示图片。

常见问题

1. 中文字体显示异常?

生成的 HTML 依赖浏览器解析字体。如果目标环境(如 Linux 服务器)缺少中文字体,可确保系统安装了常用字体(如 微软雅黑)。

2. 图片未显示?

确认 setImageEmbedded(true) 已设置。如果仍不显示,检查 Excel 中图片是否为嵌入对象(而非链接图片)。

3. 数据量过大导致 HTML 体积大?

可考虑先筛选所需数据,再转换;在导出整个工作表时无法直接限制范围,需预处理好 Excel 文件。

总结

本文通过几个典型示例,展示了如何利用 Java 实现 Excel 转 HTML。整个过程无需 Office 环境,代码简洁,易于集成到 Java 项目中。开发者可以根据实际需求调整选项,达到理想的输出效果。

注意:免费版有工作表数量限制,一般日常使用足够。

相关推荐
杨杨杨大侠2 小时前
都能接模型、RAG 和 MCP,Java Agent 框架到底差在哪?
java
Thinker QAQ3 小时前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
霸道流氓气质5 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
AOI小白新手上路5 小时前
autodl常用的tar 打包下载(数据集)命令手册:逐段拆解与套用模板
java·大数据·数据库
dishugj6 小时前
系统架构风险点、敏感点和权衡点的概念和区分
java·开发语言
苜蓿muxu6 小时前
常用代码命名规范
java
马优晨7 小时前
JAVA 中 VO 实体类是什么意思,为什么要做这个
java·开发语言·状态模式·java vo·java vo是什么
Baron X7 小时前
Eclipse Temurin 21 (JRE) Alpine 镜像获取、离线导入与推送操作
java·docker·eclipse·temurin
孙浩君7 小时前
我用 Spring Boot + xterm.js 写了个终端风格互动叙事游戏引擎:游戏即文件,上传一个 JSON 就能玩
java