在构建报表仪表板或电子邮件摘要时,生成电子表格数据的可视化预览是常见需求。Conholdate.Total for Java 提供了强大的 SDK,简化了在 Java 应用程序中将 Excel 转换为图像的过程。在本指南中,您将了解如何加载 XLSX 工作簿,配置 PNG 输出,并为整个工作表、图表或特定范围生成图像文件。完成后,您将拥有一个可直接运行的代码示例,能够适配到您自己的项目中。

将 Excel 文件转换为图像对您的应用程序的需求

开发人员经常需要将电子表格内容转换为静态图像,以用于网页预览、PDF 报告或移动端缩略图。通常的需求包括保留cell 格式、渲染嵌入的图表,并可选地将转换限制在单个范围内。手动完成这些任务——打开 Excel、截屏并保存——既不可扩展,又可能导致结果不一致。

可靠解决方案的技术约束包括:支持 XLSX 文件、能够包含图表和公式、可配置的图像分辨率,以及对多个工作表的批处理。转换必须在服务器或桌面环境中运行,而无需 Microsoft Office。

选择 Conholdate.Total for Java 来完成工作

Conholdate.Total for Java 提供统一的 API,涵盖所有所需功能。其 ExcelLoadOptions 让您加载图表和公式,而 ImageConvertOptions 则提供对格式、质量和尺寸的细粒度控制。该 SDK 可在任何 Java 运行时上运行,仅需 Maven 依赖,并能高效处理大型工作簿。

有关详细的 API 使用,请参阅官方文档。 类如 ConversionExcelLoadOptionsImageConvertOptions 的完整参考可在API 参考中找到。 您可以从发布页面下载最新的库。

在 Java 中实现 Excel 转图片转换

转换过程可以分解为几个明确的步骤。以下章节将逐步引导您了解每个部分,并直接从完整示例中摘取简短的代码片段。

安装 Conholdate.Total for Java via Maven

将 Conholdate Maven 仓库和 SDK 依赖项添加到您的 pom.xml 中:

<repositories>
  <repository>
    <id>conholdate-repo</id>
    <name>Conholdate Maven Repository</name>
    <url>https://repository.conholdate.com/repo/</url>
  </repository>
</repositories>

<dependency>
  <groupId>com.conholdate</groupId>
  <artifactId>conholdate-total</artifactId>
  <version>24.9</version>
  <type>pom</type>
</dependency>

加载带有图表和公式支持的 Excel 文件

创建一个 ExcelLoadOptions 实例,启用图表和公式加载,并使用文件流初始化 Conversion 对象:

ExcelLoadOptions loadOptions = new ExcelLoadOptions();
loadOptions.setLoadCharts(true);
loadOptions.setLoadFormulas(true);

Conversion conversion = new Conversion(new FileInputStream("input.xlsx"), loadOptions);

配置 PNG 的图像输出选项

设置所需的图像格式、质量和尺寸。宽度固定,而高度保持纵横比:

ImageConvertOptions imgOptions = new ImageConvertOptions();
imgOptions.setFormat(ImageConvertOptions.ImageFormat.PNG);
imgOptions.setQuality(90);
imgOptions.setWidth(1200);
imgOptions.setHeight(0); // preserve aspect ratio

将每个工作表或范围转换为 PNG 图像

遍历工作簿的页面(工作表)并转换每一个。您还可以通过调整 pageNumber 或使用其他加载选项来针对特定范围。

int pageCount = conversion.getPageCount();
for (int i = 1; i <= pageCount; i++) {
    imgOptions.setPageNumber(i);
    String outputPath = "output_images/sheet_" + i + ".png";
    conversion.convert(outputPath, imgOptions);
}

验证输出并处理异常

在 try‑catch 块中包装转换逻辑,并确保在开始之前输出目录已存在:

try {
    Files.createDirectories(Paths.get("output_images"));
    // conversion code here
    System.out.println("Excel to image conversion completed successfully.");
} catch (Exception ex) {
    System.err.println("Conversion failed: " + ex.getMessage());
    ex.printStackTrace();
}

上述步骤演示了如何使用 Conholdate.Total SDK 将 Excel 转换为图像,并为您提供处理图表、范围和完整工作表的灵活性。

完整代码示例:将 Excel 转换为图像(支持完整工作表)

下面的代码展示了上述步骤中描述的完整、可直接运行的实现。

import java.io.FileInputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

import com.groupdocs.conversion.Conversion;
import com.groupdocs.conversion.options.load.ExcelLoadOptions;
import com.groupdocs.conversion.options.convert.ImageConvertOptions;
import com.groupdocs.conversion.options.convert.ImageConvertOptions.ImageFormat;

public class ExcelToImageConverter {
    public static void main(String[] args) {
        String inputFile = "input.xlsx";
        String outputFolder = "output_images";

try {
            // Create output directory if it does not exist
            Files.createDirectories(Paths.get(outputFolder));

// Load options: include charts and formulas during conversion
            ExcelLoadOptions loadOptions = new ExcelLoadOptions();
            loadOptions.setLoadCharts(true);
            loadOptions.setLoadFormulas(true);

// Initialize conversion with the Excel file and load options
            try (Conversion conversion = new Conversion(new FileInputStream(inputFile), loadOptions)) {

// Determine how many pages (sheets) the workbook has
                int pageCount = conversion.getPageCount();

// Configure image output options
                ImageConvertOptions imgOptions = new ImageConvertOptions();
                imgOptions.setFormat(ImageFormat.PNG);   // Output format
                imgOptions.setQuality(90);               // Quality (relevant for JPEG)
                imgOptions.setWidth(1200);               // Desired width, height will keep aspect ratio
                imgOptions.setHeight(0);                 // 0 means preserve original aspect ratio

// Convert each sheet to a separate image file
                for (int i = 1; i <= pageCount; i++) {
                    imgOptions.setPageNumber(i);
                    String outputPath = outputFolder + "/sheet_" + i + ".png";
                    conversion.convert(outputPath, imgOptions);
                }
            }

System.out.println("Excel to image conversion completed successfully.");
        } catch (Exception ex) {
            System.err.println("Conversion failed: " + ex.getMessage());
            ex.printStackTrace();
        }
    }
}

注意: 此代码示例演示了核心功能。在将其用于项目之前,请确保更新文件路径(input.xlsxoutput_images)以匹配实际文件位置,验证所有必需的依赖项已正确安装,并在开发环境中彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

结论

在 Java 中将 Excel 转换为图像变得简单,只需使用 Conholdate.Total for Java。该 SDK 能够处理图表渲染、公式计算,并以最少的代码生成高质量的 PNG 输出。按照分步指南,您可以将此功能集成到报表工具、邮件生成器或任何需要可视化电子表格表示的应用程序中。请记住,生产环境部署需要商业许可证;您可以在 Conholdate.Total 定价 页面查看定价选项,并在评估期间从 临时许可证页面 获取临时许可证。

FAQs

  • 如何在 Java 中将 Excel 转换为图像?
    使用来自 Conholdate.Total for JavaConversion 类,配置 ExcelLoadOptionsImageConvertOptions,然后对每个工作表调用 convert

  • 我可以将 Excel 图表转换为图像吗?
    是的。使用 loadOptions.setLoadCharts(true) 启用图表加载,并在设置 imgOptions.setPageNumber 时指定图表的页码。

  • 是否可以仅转换特定范围的单元格?
    您可以在加载选项中定义范围,或在转换前选择对应所需范围的相应页码。

  • 生产使用需要什么许可证?
    需要商业许可证。请在 Conholdate.Total 定价 页面查看费用,并从 临时许可证页面 获取临时许可证。

阅读更多