Java 实现 Excel 转 HTML:完整示例

24 阅读2分钟

引言

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

环境配置

1. 添加依赖(Maven)

在项目的 pom.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,保留单元格样式、合并单元格、图片等基础格式:

代码

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 类进行配置。

代码

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 项目中。开发者可以根据实际需求调整选项,达到理想的输出效果。

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