炫酷转换:Java实现Excel转换为图片的方法

原创
2023/10/08 10:12
阅读数 937

摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言

在实际开发过程中,经常会有这样的需求:将Excel表格或特定区域转换为图片,以便在其他软件中使用。而在Java开发中,借助于报表插件可以轻松地将工作表、任意指定区域以及各种形状类型转换为图片。今天小编为大家介绍如何使用葡萄城公司的Java API组件——GcExcel将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方法将工作表转换为图片:

// 创建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方法将形状转化为图片。

3.1将 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);

实现效果如下图所示:

3.2将 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的玩法和技巧,可以参考这篇帮助手册,无论是初学者还是有经验的专业人士,该帮助手册都将为您提供有价值的指导和帮助。

扩展链接:

从表单驱动到模型驱动,解读低代码开发平台的发展趋势

低代码开发平台是什么?

基于分支的版本管理,帮助低代码从项目交付走向定制化产品开发

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部