java excel轉圖片常用的幾種方法

十分想念順店雜可。。。

在 Java 中實現 Excel 轉圖片,常用的方法主要分為兩類:使用商業庫(簡單高效但可能收費)和使用開源庫組合(免費但實現復雜)。以下是幾種常用方案及實現思路:

一、使用商業庫(推薦用于復雜場景)

商業庫通常封裝了完整的 Excel 渲染邏輯,支持復雜表格、公式、圖表等轉換,使用簡單。

1. Aspose.Cells(功能最全面)

Aspose.Cells 是處理 Excel 的專業庫,支持將工作表、單元格區域或圖表直接轉換為圖片,支持多種格式(PNG/JPG/BMP 等)。

特點

  • 支持復雜表格、公式、圖表、樣式渲染
  • 無需安裝 Office,純 Java 實現
  • 商業付費(免費版有水印)

示例代碼

import com.aspose.cells.*;
import java.io.File;public class AsposeExcelToImage {public static void main(String[] args) throws Exception {// 加載Excel文件Workbook workbook = new Workbook("input.xlsx");// 獲取第一個工作表Worksheet worksheet = workbook.getWorksheets().get(0);// 配置圖片選項(格式、分辨率等)ImageOrPrintOptions options = new ImageOrPrintOptions();options.setImageType(ImageType.PNG); // 輸出PNG格式options.setHorizontalResolution(300); // 分辨率options.setVerticalResolution(300);// 渲染整個工作表為圖片SheetRender render = new SheetRender(worksheet, options);render.toImage(0, "output_aspose.png"); // 保存圖片// 也可渲染指定單元格區域(例如A1到D10)CellArea area = new CellArea();area.startRow = 0;area.startColumn = 0;area.endRow = 9;area.endColumn = 3;worksheet.setPrintArea(area); // 設置打印區域即渲染區域render.toImage(0, "output_range.png");}
}

依賴(Maven):

<dependency><groupId>com.aspose</groupId><artifactId>aspose-cells</artifactId><version>23.12</version>
</dependency>
2. Spire.XLS(性價比高)

Spire.XLS 是另一個商業庫,功能類似 Aspose.Cells,免費版有頁數限制(如最多轉換 5 頁)。

特點

  • 支持表格、圖表、形狀轉圖片
  • 免費版可滿足簡單需求

示例代碼

import com.spire.xls.*;public class SpireExcelToImage {public static void main(String[] args) {// 加載ExcelWorkbook workbook = new Workbook();workbook.loadFromFile("input.xlsx");// 獲取第一個工作表Worksheet sheet = workbook.getWorksheets().get(0);// 保存為圖片(支持指定區域)sheet.saveToImage("output_spire.png");// 保存指定單元格區域(A1到C8)sheet.saveToImage(0, 0, 7, 2, "output_spire_range.png"); // 行、列起始索引及結束索引}
}

依賴(Maven):

<dependency><groupId>e-iceblue</groupId><artifactId>spire.xls</artifactId><version>14.7.0</version>
</dependency>

二、開源方案(適合簡單場景,免費)

開源方案需要組合多個庫實現,核心思路是:用 Excel 解析庫讀取內容 + 用圖形庫繪制圖片

1. Apache POI + BufferedImage(基礎實現)

Apache POI 是處理 Excel 的主流開源庫,但本身不支持直接轉圖片,需要手動讀取單元格內容、樣式(邊框、顏色等),再用 Java 的BufferedImage繪制。

特點

  • 完全免費,可定制化
  • 僅適合簡單表格(復雜樣式、公式、圖表難以實現)
  • 需手動處理樣式渲染,開發成本高

核心步驟

  1. 用 Apache POI 讀取 Excel 內容(單元格值、字體、顏色、邊框等)
  2. 計算表格寬高、單元格大小
  3. BufferedImageGraphics2D繪制單元格、文字、邊框
  4. 保存為圖片

示例代碼片段

import org.apache.poi.ss.usermodel.*;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;public class PoiExcelToImage {public static void main(String[] args) throws Exception {Workbook workbook = WorkbookFactory.create(new File("input.xlsx"));Sheet sheet = workbook.getSheetAt(0);// 簡單計算圖片寬高(實際需根據單元格大小動態計算)int width = 800;int height = 600;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics2D g = image.createGraphics();// 繪制背景g.setColor(Color.WHITE);g.fillRect(0, 0, width, height);// 繪制單元格(簡化示例,僅繪制文本)int rowY = 50;for (Row row : sheet) {int colX = 50;for (Cell cell : row) {String value = cell.getStringCellValue();// 繪制文本g.setColor(Color.BLACK);g.drawString(value, colX, rowY);colX += 100; // 單元格寬度}rowY += 30; // 行高}// 保存圖片ImageIO.write(image, "PNG", new File("output_poi.png"));g.dispose();}
}

依賴(Maven):

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.4</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.4</version>
</dependency>
2. Apache POI + JFreeChart(處理圖表)

如果需要轉換 Excel 中的圖表,可結合 JFreeChart(開源圖表庫):

  1. 用 POI 讀取圖表數據
  2. 用 JFreeChart 生成對應圖表圖片
  3. 合并表格圖片和圖表圖片(如需)

三、方法對比與選擇建議

方法優點缺點適用場景
Aspose.Cells功能全面,支持復雜表格 / 圖表,易用商業付費,免費版有水印生產環境、復雜 Excel 轉換
Spire.XLS性價比高,免費版可用免費版有頁數限制簡單需求、小文件轉換
Apache POI + 自定義免費開源,可深度定制開發復雜,不支持復雜樣式 / 公式簡單表格、低成本場景

總結

  • 追求效率和完整性:優先選擇 Aspose.Cells 或 Spire.XLS
  • 免費且簡單場景:用 Apache POI 手動繪制(僅限簡單表格)
  • 避免重復造輪子:商業庫是大多數企業的選擇(可評估成本)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92822.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92822.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92822.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT項目 -仿QQ音樂的音樂播放器(第五節)

目錄 一、CommonPage界?設置和顯示 二、自定義ListItemBox 三、支持hover效果 四、自定義VolumeTool 五、界面設置 六、頁面創建及彈出 七、繪制三角 一、CommonPage界面設置和顯示 void CommonPage::setCommonPageUI(const QString &title, const QString &imag…

wstool和git submodule優劣勢對比

wstool 和 git submodule 都可以用來管理項目中的外部源代碼依賴&#xff0c;但它們的設計理念、工作流程和適用場景有很大不同。 我們來深入對比一下它們的優勢和劣勢。 核心理念比喻 git submodule&#xff1a;像是在你的汽車設計圖紙中&#xff0c;直接嵌入了另一家公司&…

六、RuoYi-Cloud-Plus OSS文件上傳配置

1.前面我們完成了RuoYi-Cloud-Plus 部署及啟動&#xff0c;此刻已經可以正常訪問。 前面文章的專欄內容在這&#xff0c;感興趣可以看看。 https://blog.csdn.net/weixin_42868605/category_13023920.html 2.但現在雖然已經啟動成功&#xff0c;但有很多功能我們依舊用不了&a…

達夢數據庫日常運維命令

查詢數據庫表空間數據文件使用大小限制DECLARE K INT:(SELECT cast(PAGE()/1024 as varchar)); BEGIN SELECTF."PATH" 數據文件 ,F.CLIENT_PATH,G.NAME 所屬表空間,F.MAX_SIZE||M 文件擴展限制,(CASE F.AUTO_EXTEND WHEN 1 THEN 是 ELSE 否 END) 文件…

使用線性降維方法進行數據降維

在數據科學與機器學習的領域中&#xff0c;維度災難問題經常導致模型的性能下降。線性降維方法是一種常見的技術&#xff0c;用于在保留盡可能多的原始數據特征的同時&#xff0c;減少數據集的維度。這些方法通過將高維數據映射到低維空間來減少特征數量&#xff0c;從而加速模…

OpenCV圖像裁剪與 ROI 操作

在圖像處理領域&#xff0c;ROI&#xff08;Region of Interest&#xff09;區域感興趣操作是非常基礎而重要的一環。無論是進行目標檢測、圖像分割&#xff0c;還是簡單的圖像處理&#xff0c;都離不開對圖像某一區域的選取與處理。本文將結合 OpenCV 的 C 接口&#xff0c;詳…

關于AI應用案例計算機視覺、自然語言處理、推薦系統和生成式AI四大領域的詳細技術分析。

一、計算機視覺應用&#xff1a;實時物體檢測 案例描述&#xff1a;使用YOLOv8模型實現實時物體檢測系統&#xff0c;應用于安防監控場景。 1. 代碼示例&#xff08;Python&#xff09; python from ultralytics import YOLO import cv2# 加載預訓練模型 model YOLO("…

各個網絡層擁有的協議簡寫

OSI 七層模型&#xff08;從下到上分別為物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層&#xff09;是網絡通信的經典理論框架&#xff0c;每層都有其核心功能和對應的協議。以下是各層的主要協議列舉&#xff1a;1. 物理層&#xff08;Physical Layer&#xff…

django基于Python的設計師作品平臺的數據可視化系統設計與實現

django基于Python的設計師作品平臺的數據可視化系統設計與實現

等保測評-RabbitMQ中間件

RabbitMQ-docker部署查看版本&#xff1a;rabbitmqctl version、rabbitmqctl status | grep version配置文件&#xff1a;一般為rabbitmq.conf端口號&#xff1a;一般為15672一、身份鑒別a&#xff09;應對登錄的用戶進行身份標識和鑒別&#xff0c;身份標識具有唯一性&#xf…

Linux操作系統從入門到實戰(十六)馮諾依曼體系結構,操作系統與系統調用和庫函數概念

Linux操作系統從入門到實戰&#xff08;十六&#xff09;馮諾依曼體系結構&#xff0c;操作系統與系統調用和庫函數概念前言一、馮諾依曼體系結構1. 馮諾依曼體系是什么&#xff1f;2. 核心部件有哪些&#xff1f;3. 數據是怎么跑的&#xff1f;4. 發文件的流程也一樣5. 為什么…

廣東省省考備考(第七十二天8.10)——言語理解與表達、判斷推理(強化訓練)

小模考&#xff08;言語、常識&#xff09; 錯題解析 本題可從第二空入手。轉折前后語意相反&#xff0c;轉折前指出“投資對經濟拉動只能發揮短期的作用”&#xff0c;故轉折后應表達“最終消費對經濟拉動才能發揮長期的作用”。A項“持久”、D項“長期”均符合文意&#xff0…

數據庫刪除術:邏輯刪除 vs 物理刪除,選錯毀所有

你以為刪除數據就是點個按鈕&#xff1f;背后藏著數據安全的生死抉擇&#xff01; 本文揭秘兩種刪除方式的本質區別&#xff0c;用真實案例教你避免災難性數據丟失。一、刪除的本質:數據消失的兩種方式 &#x1f9ea; #mermaid-svg-pVylRd9e5p4VE5G0 {font-family:"trebuc…

【Python 小腳本·大用途 · 第 3 篇】

1. 痛點 100 字 硬盤里散落著 IMG_2024(1).jpg、IMG_2024(1) (1).jpg、下載目錄里同名但大小不同的視頻…… 手動比對既耗時又容易誤刪。今天用 30 行 Python 腳本&#xff0c;基于「內容哈希」一鍵找出并刪除重復文件&#xff0c;支持多目錄遞歸、白名單、空目錄清理。2. 腳本…

【網絡與爬蟲 52】Scrapyd-k8s集群化爬蟲部署:Kubernetes原生分布式爬蟲管理平臺實戰指南

關鍵詞: Scrapyd-k8s, Kubernetes爬蟲部署, 容器化爬蟲管理, 云原生數據采集, 分布式爬蟲集群, Docker爬蟲, K8s工作負載, Scrapy部署自動化 摘要: 本文深入解析Scrapyd-k8s這一革命性的Kubernetes原生爬蟲管理平臺&#xff0c;通過費曼學習法從傳統部署痛點出發&#xff0c;詳…

Spring WebSocket安全認證與權限控制解析

一、認證架構設計 1.1 WebSocket安全認證流程 #mermaid-svg-23pyTyZe6teZy3Hg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-23pyTyZe6teZy3Hg .error-icon{fill:#552222;}#mermaid-svg-23pyTyZe6teZy3Hg .error-t…

復現論文《多無人機協同任務分配算法設計與實現》

1. 論文標題 多無人機協同任務分配算法設計與實現 The Design and Implementation of Multi-UAVs Cooperative Task Assignment Algorithm 2. 內容概括 該論文針對異構多無人機協同執行多目標多類型任務時的分配問題展開研究。首先提出“兩階段”任務分配結構:第一階段通過…

MCU-基于TC397的啟動流程

TC397的啟動流程(Start Sequence) 整體啟動流程包括固件啟動(Boot Firmware)和 Bootloader 和軟件啟動(Application start-up software)三個階段。 1. Boot Firmware:是芯片上電后最開始執行的代碼,代碼由英飛凌供應商固化在BootRom中的,不可編程,沒辦法對BootRom中的…

單片機畢業設計模板|畢設答辯|畢業設計項目|畢設設計|單片機物聯網畢業設計|基于STM32單片機的紗管圖像識別系統設計

畢業設計題目&#xff1a;基于STM32單片機的紗管圖像識別系統設計1. 需求分析目標用戶&#xff1a;紡織行業&#xff0c;自動化生產線&#xff0c;質量檢測等。核心功能&#xff1a;實時識別和檢測紗管的外觀缺陷&#xff08;如破損、色差等&#xff09;。提供數據記錄和報告功…

谷歌DeepMind發布Genie 3:通用型世界模型,可生成前所未有多樣化的交互式虛擬環境

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…