Java實(shí)現(xiàn)Excel轉(zhuǎn)化為圖片的代碼詳解
引言
在實(shí)際開發(fā)里,常常存在將 Excel 表格或特定區(qū)域轉(zhuǎn)換為圖片,以便在其他軟件中使用的需求。在 Java 開發(fā)中,借助報(bào)表插件能夠輕松實(shí)現(xiàn)將工作表、任意指定區(qū)域以及各種形狀類型轉(zhuǎn)換為圖片。本文將詳細(xì)介紹如何使用 Java 達(dá)成 Excel 到圖片的轉(zhuǎn)化。
正文
在 Java 中將 Excel 轉(zhuǎn)化為圖片
在Java里,可運(yùn)用 ImageSaveOptions 類的方法把工作表、區(qū)域或形狀導(dǎo)出為圖片文件。以下是 ImageSaveOptions 類的詳細(xì)方法:
方法 | 工作表 | 區(qū)域 | 形狀 | 描述 |
---|---|---|---|---|
ScaleX and ScaleY | Yes | Yes | Yes | 獲取或設(shè)置導(dǎo)出圖片文件的縮放比例 |
Resolution | Yes | Yes | Yes | 獲取或設(shè)置導(dǎo)出圖片文件中 JPEG 文件的 DPI |
BackgroundColor | Yes | Yes | Yes | 獲取或設(shè)置導(dǎo)出圖片文件的背景顏色 |
ShowRowHeadings | Yes | Yes | No | 獲取或設(shè)置是否在導(dǎo)出的圖片文件中顯示行標(biāo)題 |
ShowColumnHeadings | Yes | Yes | No | 獲取或設(shè)置是否在導(dǎo)出的圖片文件中顯示列標(biāo)題 |
ShowGridlines | Yes | Yes | No | 獲取或設(shè)置是否在導(dǎo)出的圖片文件中顯示網(wǎng)格線 |
GridlineColor | Yes | Yes | No | 獲取或設(shè)置導(dǎo)出圖片文件中網(wǎng)格線的顏色 |
ShowDrawingObjects | Yes | Yes | No | 獲取或設(shè)置是否在導(dǎo)出的圖片文件中顯示繪圖對(duì)象(圖表、形狀或圖片) |
BlackAndWhite | Yes | Yes | Yes | 獲取或設(shè)置是否導(dǎo)出黑白圖片 |
下面介紹分別將工作表、區(qū)域和形狀轉(zhuǎn)化為圖片的方法:
1. 將工作表轉(zhuǎn)換為圖片
在 Java 中,可使用 IWorksheet 接口的 toImage 方法將工作表轉(zhuǎn)換為圖片。示例代碼如下:
// 創(chuàng)建workbook Workbook workbook = new Workbook(); IWorksheet worksheet = workbook.getWorksheets().get(0); // 添加數(shù)據(jù) 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);
實(shí)現(xiàn)效果如下:
2. 將區(qū)域轉(zhuǎn)換為圖片
在 Java 中,可使用 IRange 接口的 toImage 方法將工作表中的特定區(qū)域轉(zhuǎn)換為圖片。示例代碼如下:
// 創(chuàng)建workbook Workbook workbook = new Workbook(); IWorksheet worksheet = workbook.getWorksheets().get(0); // 添加數(shù)據(jù) 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)); // 直接把區(qū)域保存為圖片 range.toImage("RangeToImage.png"); // 通過 ImageSaveOptions 保存區(qū)域?yàn)閳D片 range.toImage("RangeToImage_UsingImageSaveOptions.png", options);
實(shí)現(xiàn)效果如下:
3. 將形狀轉(zhuǎn)換為圖片
在 Java 中,可使用 ImageSaveOptions 方法將形狀轉(zhuǎn)化為圖片。
- 將 shape 轉(zhuǎn)換為圖片:
// 創(chuàng)建workbook Workbook workbook = new Workbook(); IWorksheet worksheet = workbook.getWorksheets().get(0); // 添加一個(gè)橢圓形狀 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);
實(shí)現(xiàn)效果如下:
- 將 chart 轉(zhuǎn)換為圖片:
// 創(chuàng)建workbook Workbook workbook = new Workbook(); IWorksheet worksheet = workbook.getWorksheets().get(0); // 準(zhǔn)備圖表的數(shù)據(jù) 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); // 設(shè)置圖表標(biāo)題 shape.getChart().getChartTitle().getTextFrame().getTextRange().getParagraphs().add("Annual Sales Record"); // 保存為圖片 shape.toImage("ConvertChartToImage.png");
實(shí)現(xiàn)效果如下:
結(jié)論
到此這篇關(guān)于Java實(shí)現(xiàn)Excel轉(zhuǎn)化為圖片的代碼詳解的文章就介紹到這了,更多相關(guān)Java Excel轉(zhuǎn)圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別)
這篇文章主要介紹了Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別) ,需要的朋友可以參考下2017-02-02springboot集成springdoc-openapi的案例講解(模擬前端請(qǐng)求)
文章介紹了Spring?Boot集成Swagger時(shí)版本沖突的常見問題,推薦使用springdoc-openapi-ui替代Springfox,因其配置更簡單且遵循OpenAPI規(guī)范,同時(shí)提供驗(yàn)證和界面優(yōu)化方法,對(duì)springboot集成springdoc-openapi相關(guān)知識(shí)感興趣的朋友一起看看吧2025-06-06解決springboot項(xiàng)目上傳文件出現(xiàn)臨時(shí)文件目錄為空的問題
這篇文章主要介紹了解決springboot項(xiàng)目上傳文件出現(xiàn)臨時(shí)文件目錄為空的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09在SpringBoot當(dāng)中使用Thymeleaf視圖解析器的詳細(xì)教程
Thymeleaf是一款開源的模板引擎,它允許前端開發(fā)者使用HTML與XML編寫動(dòng)態(tài)網(wǎng)頁,hymeleaf的主要特點(diǎn)是將表達(dá)式語言嵌入到HTML結(jié)構(gòu)中,它支持Spring框架,使得在Spring MVC應(yīng)用中集成非常方便,本文給大家介紹了在SpringBoot當(dāng)中使用Thymeleaf視圖解析器的詳細(xì)教程2024-09-09Spring注解@RestControllerAdvice原理解析
這篇文章主要介紹了Spring注解@RestControllerAdvice原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11.NET Core使用SignalR實(shí)現(xiàn)實(shí)時(shí)通訊的示例代碼
SignalR是一個(gè)ASP.NETCore庫,用于在客戶端和服務(wù)器之間實(shí)現(xiàn)實(shí)時(shí)通訊,本文主要介紹了.NETCore中使用SignalR實(shí)現(xiàn)實(shí)時(shí)通訊,感興趣的可以了解一下2024-11-11