• 炫酷转换: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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    实现效果如下图所示:

    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    实现效果如下图所示:

    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    实现效果如下图所示:

    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");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    实现效果如下图所示:

    总结

    以上就是关于如何在Java中将Excel转换为图片的介绍。如果您想了解更多有关于Java的玩法和技巧,可以参考这篇帮助手册,无论是初学者还是有经验的专业人士,该帮助手册都将为您提供有价值的指导和帮助。

    扩展链接:

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

    低代码开发平台是什么?

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

  • 相关阅读:
    JavaScript大作业:基于HTML实现紫色化妆品包装设计公司企业网站
    电输运性质测试系统
    QGIS编译(跨平台编译)之五十一:qgis_native库在Qt Creator环境下编译的错误处理
    Nginx跨域解决方案
    八、Spring Data JPA----(1)简单条件查询
    Linux下如何配置普通用户的sudo命令权限?
    Leetcode 面试题 17.10. 主要元素
    linux添加一条到中间路由器的路由
    对淘宝秒杀程序的实践【2022.9】
    相比Angular和React,Vue.js插件有哪些优势?
  • 原文地址:https://blog.csdn.net/powertoolsteam/article/details/133376759