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

相关推荐
怒放吧德德9 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆11 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌13 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊14 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang14 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang16 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解16 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing20 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean20 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9721 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java