Java 实现 Excel 转化为图片

引言

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

正文

在 Java 中将 Excel 转化为图片

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

方法 工作表 区域 形状 描述
ScaleX and ScaleY Yes Yes Yes 获取或设置导出图片文件的缩放比例
Resolution Yes Yes Yes 获取或设置导出图片文件中 JPEG 文件的 DPI
BackgroundColor Yes Yes Yes 获取或设置导出图片文件的背景颜色
ShowRowHeadings Yes Yes No 获取或设置是否在导出的图片文件中显示行标题
ShowColumnHeadings Yes Yes No 获取或设置是否在导出的图片文件中显示列标题
ShowGridlines Yes Yes No 获取或设置是否在导出的图片文件中显示网格线
GridlineColor Yes Yes No 获取或设置导出图片文件中网格线的颜色
ShowDrawingObjects Yes Yes No 获取或设置是否在导出的图片文件中显示绘图对象(图表、形状或图片)
BlackAndWhite Yes Yes Yes 获取或设置是否导出黑白图片

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

1. 将工作表转换为图片

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

java 复制代码
// 创建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 方法将工作表中的特定区域转换为图片。示例代码如下:

java 复制代码
// 创建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 转换为图片
java 复制代码
// 创建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 转换为图片
java 复制代码
// 创建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 的玩法和技巧,可参考相关帮助手册,无论是初学者还是有经验的专业人士,该帮助手册都能提供有价值的指导和帮助 ^^。

文章中使用到的工具:GcExcel-Java

相关推荐
唐青枫11 分钟前
Java SLF4J 实战指南:从日志门面到 Logback、MDC 和链路追踪
java
jvmind_dev43 分钟前
Java GC 实战指南(番外篇):被忽视的隐形杀手 —— Class Unloading 如何拖垮 GC
java·后端
An_s1 小时前
机器学习python之识别图中物品信息
java·linux·开发语言
AIGS0011 小时前
跨越语义鸿沟:企业本体语义平台的构建与落地
java·人工智能·python·机器学习·人工智能ai大模型应用
蓝田~2 小时前
大模型本地部署与远程调用 — 从 API 到 Agent
java·人工智能·claude·claude code
码农进化录2 小时前
Java 程序员的 AI 进化论 | Spring Boot 接入 OpenAI 的六个坑,全帮你踩了
java·spring boot·openai
疯狂成瘾者2 小时前
Java 常见集合方法
java·windows·python
从此以后自律2 小时前
ConcurrentHashMap 超详细详解
java
兰令水3 小时前
hot100【acm版】【2026.7.14打卡-java版本】
java·数据结构·算法·leetcode·面试
thefool1122663 小时前
Java 数组是引用类型
java