Java实现Excel转化为图片的代码详解

 更新时间:2025年08月04日 09:16:24   作者:葡萄城技术团队  
在实际开发里,常常存在将Excel表格或特定区域转换为图片,以便在其他软件中使用的需求,在Java开发中,借助报表插件能够轻松实现将工作表、任意指定区域以及各种形状类型转换为图片,本文将详细介绍如何使用Java达成Excel到图片的转化,需要的朋友可以参考下

引言

在实际开发里,常常存在将 Excel 表格或特定区域转换为图片,以便在其他软件中使用的需求。在 Java 开发中,借助报表插件能够轻松实现将工作表、任意指定区域以及各种形状类型转换为图片。本文将详细介绍如何使用 Java 达成 Excel 到图片的转化。

正文

在 Java 中将 Excel 转化为图片

在Java里,可运用 ImageSaveOptions 类的方法把工作表、区域或形状导出为图片文件。以下是 ImageSaveOptions 类的详细方法:

方法工作表区域形状描述
ScaleX and ScaleYYesYesYes获取或设置导出图片文件的缩放比例
ResolutionYesYesYes获取或设置导出图片文件中 JPEG 文件的 DPI
BackgroundColorYesYesYes获取或设置导出图片文件的背景颜色
ShowRowHeadingsYesYesNo获取或设置是否在导出的图片文件中显示行标题
ShowColumnHeadingsYesYesNo获取或设置是否在导出的图片文件中显示列标题
ShowGridlinesYesYesNo获取或设置是否在导出的图片文件中显示网格线
GridlineColorYesYesNo获取或设置导出图片文件中网格线的颜色
ShowDrawingObjectsYesYesNo获取或设置是否在导出的图片文件中显示绘图对象(图表、形状或图片)
BlackAndWhiteYesYesYes获取或设置是否导出黑白图片

下面介绍分别将工作表、区域和形状转化为图片的方法:

1. 将工作表转换为图片

在 Java 中,可使用 IWorksheet 接口的 toImage 方法将工作表转换为图片。示例代码如下:

// 创建workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);

// 添加数据
worksheet.getRange("A1").setValue("Sales Report");
worksheet.getRange("A1").getFont().setColor(Color.FromArgb(56, 93, 171));
worksheet.getRange("A1").getFont().setSize(24);
worksheet.getRange("A1").getFont().setBold(true);
worksheet.getRange("A3:E7")
    .setValue(new Object[][] { { "Date", "Product", "Customer", "Amount", "Show" },
        { "1/1/2021", "Bose 785593-0050", "Fabrikam, Inc.", "$1,886.00", "1" },
        { "1/3/2021", "Canon EOS 1500D", "Alpine Ski House", "$4,022.00", "" },
        { "1/4/2021", "Haier 394L 4Star", "Coho Winery", "$8,144.00", "" },
        { "1/7/2021", "IFB 6.5 Kg FullyAuto", "Southridge Video", "$8,002.00", "1" } });
// 初始化 ImageSaveOptions 并且配置属性
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setShowRowHeadings(true);
options.setShowColumnHeadings(false);
options.setShowDrawingObjects(true);
options.setBackgroundColor(Color.FromArgb(226, 231, 243));
options.setShowGridlines(true);
options.setGridlineColor(Color.FromArgb(145, 167, 214));

// 直接把工作表保存为图片
worksheet.toImage("WorksheetToImage.png");

// 通过ImageSaveOptions把工作表保存为图片
worksheet.toImage("WorksheetToImage_UsingImageSaveOptions.png", options);

实现效果如下:

2. 将区域转换为图片

在 Java 中,可使用 IRange 接口的 toImage 方法将工作表中的特定区域转换为图片。示例代码如下:

// 创建workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);

// 添加数据
worksheet.getRange("D10:F10").setValue(new String[] { "Device", "Quantity", "Unit Price" });
worksheet.getRange("D11:F14").setValue(new Object[][] { { "T540p", 12, 9850 }, { "T570", 5, 7460 },
    { "Y460", 6, 5400 }, { "Y460F", 8, 6240 } });

IRange range = worksheet.getRange("D10:F14");

// 初始化 ImageSaveOptions 并且配置属性
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setShowRowHeadings(true);
options.setShowColumnHeadings(false);
options.setShowDrawingObjects(true);
options.setBackgroundColor(Color.FromArgb(226, 231, 243));
options.setShowGridlines(true);
options.setGridlineColor(Color.FromArgb(145, 167, 214));

// 直接把区域保存为图片
range.toImage("RangeToImage.png");

// 通过 ImageSaveOptions 保存区域为图片
range.toImage("RangeToImage_UsingImageSaveOptions.png", options);

实现效果如下:

3. 将形状转换为图片

在 Java 中,可使用 ImageSaveOptions 方法将形状转化为图片。

  • 将 shape 转换为图片
// 创建workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);

// 添加一个椭圆形状
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Oval, 20, 20, 200, 100);

// 初始化 ImageSaveOptions 并且配置属性
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setBackgroundColor(Color.GetLimeGreen());

// 直接保存为形状
shape.toImage("ShapeToImage.png");

// 通过 ImageSaveOptions 来保存图片
shape.toImage("ShapeToImage_UsingImageSaveOptions.png", options);

实现效果如下:

  • 将 chart 转换为图片
// 创建workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);

// 准备图表的数据
worksheet.getRange("A1:D4")
    .setValue(new Object[][] { { null, "Q1", "Q2", "Q3" }, { "Mobile Phones", 1330, 2345, 3493 },
        { "Laptops", 2032, 3632, 2197 }, { "Tablets", 6233, 3270, 2030 } });

worksheet.getRange("A:D").getColumns().autoFit();

// 增加面积图
IShape shape = worksheet.getShapes().addChart(ChartType.Area, 250, 20, 360, 230);

// 给SeriesCollection添加系列
shape.getChart().getSeriesCollection().add(worksheet.getRange("A1:D4"), RowCol.Columns, true, true);

// 设置图表标题
shape.getChart().getChartTitle().getTextFrame().getTextRange().getParagraphs().add("Annual Sales Record");

// 保存为图片
shape.toImage("ConvertChartToImage.png");

实现效果如下:

结论

到此这篇关于Java实现Excel转化为图片的代码详解的文章就介绍到这了,更多相关Java Excel转图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot中的数据脱敏处理详解

    SpringBoot中的数据脱敏处理详解

    本文介绍了在SpringBoot中进行数据脱敏处理的方法,通过自定义注解和Jackson配置,可以轻松实现对敏感数据的脱敏,保护用户隐私
    2025-03-03
  • Java基本数据类型与封装类型详解(int和Integer区别)

    Java基本数据类型与封装类型详解(int和Integer区别)

    这篇文章主要介绍了Java基本数据类型与封装类型详解(int和Integer区别) ,需要的朋友可以参考下
    2017-02-02
  • springboot集成springdoc-openapi的案例讲解(模拟前端请求)

    springboot集成springdoc-openapi的案例讲解(模拟前端请求)

    文章介绍了Spring Boot集成Swagger时版本冲突的常见问题,推荐使用springdoc-openapi-ui替代Springfox,因其配置更简单且遵循OpenAPI规范,同时提供验证和界面优化方法,对springboot集成springdoc-openapi相关知识感兴趣的朋友一起看看吧
    2025-06-06
  • 解决springboot项目上传文件出现临时文件目录为空的问题

    解决springboot项目上传文件出现临时文件目录为空的问题

    这篇文章主要介绍了解决springboot项目上传文件出现临时文件目录为空的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 如何基于SpringBoot部署外部Tomcat过程解析

    如何基于SpringBoot部署外部Tomcat过程解析

    这篇文章主要介绍了SpringBoot以war包形式部署到外部Tomcat过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java掩码的几种使用例举

    Java掩码的几种使用例举

    今天小编就为大家分享一篇关于Java掩码的使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 在SpringBoot当中使用Thymeleaf视图解析器的详细教程

    在SpringBoot当中使用Thymeleaf视图解析器的详细教程

    Thymeleaf是一款开源的模板引擎,它允许前端开发者使用HTML与XML编写动态网页,hymeleaf的主要特点是将表达式语言嵌入到HTML结构中,它支持Spring框架,使得在Spring MVC应用中集成非常方便,本文给大家介绍了在SpringBoot当中使用Thymeleaf视图解析器的详细教程
    2024-09-09
  • 使用JSONObject生成和解析json的方法

    使用JSONObject生成和解析json的方法

    下面小编就为大家带来一篇使用JSONObject生成和解析json的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Spring注解@RestControllerAdvice原理解析

    Spring注解@RestControllerAdvice原理解析

    这篇文章主要介绍了Spring注解@RestControllerAdvice原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • .NET Core使用SignalR实现实时通讯的示例代码

    .NET Core使用SignalR实现实时通讯的示例代码

    SignalR是一个ASP.NETCore库,用于在客户端和服务器之间实现实时通讯,本文主要介绍了.NETCore中使用SignalR实现实时通讯,感兴趣的可以了解一下
    2024-11-11

最新评论