Java 實現 Excel 轉化為 PDF

引言

在實際開發中,將 Excel 文件轉化為 PDF 格式是一項常見需求。例如在需要共享數據報表時,PDF 格式具有更好的兼容性和安全性。GrapeCity Documents for Excel(GcExcel)為 Java 開發者提供了強大的工具,可輕松實現將 Excel 轉化為 PDF 的功能。本文將詳細介紹如何使用 GcExcel 在 Java 中完成這一轉化過程。

正文

基本導出功能

GcExcel 提供了將工作簿導出為 PDF 文件的工具。可以為工作簿中的每個工作表設置分頁,并將其導出到 PDF 文件中指定的頁面。在執行導出操作時,還能應用樣式、自定義字體、添加安全選項、配置文檔屬性以及調整行高或列寬。此外,帶有圖表、切片器和背景圖片的 Excel 工作表也能成功導出為 PDF 文檔。

GcExcel 允許使用 IWorkbook 接口的 save() 方法將工作簿中所有可見的電子表格保存到 PDF 中,工作簿中的每個工作表都會保存到 PDF 文件中的新頁面。若只想將當前工作表(活動工作表)導出為 PDF 格式,則可使用 IWorksheet 接口的 save() 方法。

在處理圖片方面,GcExcel 也非常高效。如果一張圖片在電子表格中被多次使用,GcExcel 只會保留一份圖片副本,以減小導出的 PDF 文件的大小。

以下是將電子表格導出為 PDF 文件的示例代碼:

// Create a new workbook and add worksheets
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
IWorksheet worksheet1 = workbook.getWorksheets().add();// Set value and apply styles to the worksheet
worksheet1.getRange("A1").setValue("Sheet1");
worksheet1.getRange("A1").getFont().setName("Wide Latin");
worksheet1.getRange("A1").getFont().setColor(Color.GetRed());
worksheet1.getRange("A1").getInterior().setColor(Color.GetGreen());// Export Workbook to pdf file, the exported file has two pages.
workbook.save("ConvertWorkbookToPDF.pdf", SaveFileFormat.Pdf);// Just export a particular worksheet to pdf file
worksheet1.save("ConvertWorksheetToPDF.pdf", SaveFileFormat.Pdf);

定制導出選項

GcExcel 提供了 PdfSaveOptions 類來定制 PDF 文件的導出,這些選項如下:

選項描述
導出選項PdfSaveOptions存儲導出 PDF 時的各種選項
BorderOptions導出 PDF 時存儲邊框選項
DocumentProperties表示 PDF 的文檔屬性
FileFormat表示工作簿的保存格式
FormFields指示是否用 PDF 表單域替換 Excel 表單控件,并非所有控件和屬性都受支持
ImageQuality以百分比設置圖像質量,此值必須介于 0(最低質量,最大壓縮)和 100(最高質量,無壓縮)之間,默認值為 75
OpenActionScript設置打開保存的 PDF 文件時要執行的 JavaScript
PrintBackgroundPicture指示是否在頁面上打印工作表的背景圖像
PrintTransparentCell指示是否在頁面上打印單元格背景色的透明度
SecurityOptions表示 PDF 的安全設置
ShrinkToFitSettings關于對自動換行文本執行縮小以適應的設置
ViewerPreferences包含指定當前文檔應如何顯示的信息的設置
IncludeAutoMergedCells指示是否包含自動合并的單元格,默認值為 false

在 PDF 文檔中設置 JavaScript

GcExcel 還支持通過 PdfSaveOptions 類的 setOpenActionScript 方法在 PDF 文檔中設置 JavaScript。打開保存的 PDF 文檔時,會執行 JavaScript。以下是示例代碼:

Workbook workbook = new Workbook();
workbook.open("D:\\SampleTemplate.xlsx");
workbook.processTemplate();
PdfSaveOptions options = new PdfSaveOptions();
options.setOpenActionScript("var fld1 = this.getField(\"num\");" +"fld1.value = fld1.value;" +"this.dirty = false;");
workbook.save("SampleTemplate_java.pdf", options);

自定義導出 PDF 的其他設置

在執行導出操作時,可以配置字體、設置樣式和指定頁面設置選項,來自定義導出 PDF。有關詳細信息,請參閱以下主題:

  • 設置字體樣式
  • 導出數據透視表樣式和格式
  • 導出形狀
  • 導出邊框
  • 導出條件格式
  • 導出填充樣式
  • 導出圖片
  • Export圖表
  • 導出迷你圖
  • 導出表格
  • 導出文本
  • 導出垂直文本
  • 設置文本自動收縮與自動換行
  • 導出切片器
  • 設置安全選項
  • 設置文檔屬性
  • 調整行高和列寬
  • 設置背景圖片
  • 分頁控制
  • 設置背景色透明度
  • 跟蹤導出進度
  • 自定義邊框樣式

需要注意的是,GcExcel 不支持將圖片設置(如線條格式、填充格式、亮度、對比度和水印顏色類型)導出到 PDF 文檔中。并且與微軟 Excel 相比,GcExcel 中 PatternType 枚舉的 DiagonalCross 結果有所不同。

結論

通過 GcExcel 提供的功能和方法,Java 開發者能夠方便地實現將 Excel 轉化為 PDF 的需求。不僅可以進行基本的導出操作,還能通過 PdfSaveOptions 類對導出的 PDF 文件進行定制,包括設置文檔屬性、安全選項、圖像質量等。同時,還支持在 PDF 文檔中設置 JavaScript。不過,在使用過程中需要注意其存在的一些限制,如圖片設置的導出不支持等。如果想深入了解更多詳細信息,可以參考相關幫助文檔 ^^。

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

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

相關文章

Spring Boot3批式訪問Dify聊天助手接口

Spring Boot3批式訪問Dify聊天助手接口 前言 之前已經配置好Dify1.4.1及LM Studio集成: https://lizhiyong.blog.csdn.net/article/details/148607462 現在就可以借助Spring Boot3去訪問Dify的后端接口,讓前端展示大模型的返回內容。這是我等大數據資…

事務傳播行為詳解

一、事務傳播行為的基本概念 事務傳播行為是Spring 框架中事務管理的核心概念,用于定義當一個事務方法被另一個事務方法調用時,事務應如何傳播。通俗地說,它解決了 “多個事務方法嵌套調用時,新方法是加入現有事務還是創建新事務…

Java八股文——Spring「SpringMVC 篇」

MVC分層介紹一下 面試官您好,MVC是一種非常經典、影響深遠的軟件設計模式,它的全稱是Model-View-Controller。在我看來,它的核心目標就是解決早期Web開發中,業務邏輯、數據和界面顯示高度耦合的問題,從而實現“各司其…

FreeSWITCH mod_curl 和 mod_xml_rpc 測試

編輯 /usr/local/freeswitch/conf/autoload_configs/xml_rpc.conf.xml <configuration name"xml_rpc.conf" description"XML RPC"> <settings> <param name"http-port" value"8889"/> <param name&quo…

實時監控、秒級決策:鏡舟科技如何重塑融資融券業務數據處理模式

融資融券業務作為證券市場的重要組成部分&#xff0c;已成為金融機構核心業務增長點和利潤來源。截至 2023 年底&#xff0c;我國融資融券余額已突破 1.8 萬億元&#xff0c;業務量呈現爆發式增長。然而&#xff0c;在業務高速發展的同時&#xff0c;金融機構面臨著數據處理效率…

Linux與量子計算:面向未來的架構演進

Linux與量子計算&#xff1a;面向未來的架構演進 當經典計算遇上量子革命 引言&#xff1a;量子計算時代的黎明 量子計算正從理論走向工程實踐&#xff0c;Linux作為現代計算的基石&#xff0c;正在量子革命中扮演關鍵角色。據IBM預測&#xff0c;到2027年&#xff0c;量子優勢…

Java中wait()為何必須同步調用?

在 Java 中&#xff0c;wait() 方法必須在 synchronized 方法或代碼塊中調用&#xff0c;主要原因如下&#xff1a; 1. 監視器鎖&#xff08;Monitor&#xff09;機制 依賴對象鎖&#xff1a;wait() 方法需要操作對象的監視器鎖&#xff08;Monitor&#xff09;&#xff0c;調…

前端面試專欄-基礎篇:4. 頁面渲染流程與性能優化

頁面渲染流程與性能優化詳解&#xff08;完整版&#xff09; 一、現代瀏覽器渲染流程&#xff08;詳細說明&#xff09; 1. 構建DOM樹 瀏覽器接收到HTML文檔后&#xff0c;會逐步解析并構建DOM&#xff08;Document Object Model&#xff09;樹。具體過程如下&#xff1a; (…

漲薪技術|Docker端口映射與容器互聯技術

前面的推文我們學了Docker操作的常用命令,今天開始給大家分享Docker端口映射與容器互聯,歡迎關注。Docker不管是程序員,架構師或者測試工程師都必須要掌握的一門主流技術。 Docker除了通過網絡訪問外,還提供了兩個很方便的功能來滿足服務訪問的基本需求,一個是允許映射容…

Roboguide工作站機器人重新安裝軟件包

1、點擊菜單欄“機器人-屬性”&#xff1b; 2、點擊“重新生成”&#xff1b; 3、點擊“確定”&#xff1b; 4、點擊“6&#xff1a;機器人選項” 5、在搜索框搜索軟件包&#xff0c;或在軟件包列表選擇&#xff0c;勾選軟件包后點擊“下一步”&#xff1b; 6、點擊“完成”&am…

預訓練CNN網絡的遷移學習(MATLAB例)

從基于大型數據集訓練的神經網絡中提取層&#xff0c;并基于新數據集進行微調。本例使用ImageNet中的子集進行微調。 This example retrains a SqueezeNet neural network using transfer learning. This network has been trained on over a million images, and can classif…

kali系統 windows Linux靶機入侵演練

Kali系統與Windows/Linux靶機入侵演練簡介 演練概述 Kali Linux是一款專為滲透測試和網絡安全評估設計的操作系統,常被安全專業人員用于合法的安全測試。入侵演練是網絡安全訓練的重要組成部分,旨在幫助安全人員了解攻擊手法并提升防御能力。 基本組件 1. **攻擊機**:通常…

手搓transformer

思路是這樣子的&#xff1a;從手搓代碼的角度去學習transformer&#xff0c;代碼會一個一個模塊地從頭到尾添加&#xff0c;以便學習者跟著敲&#xff0c;到最后再手搓一個基于tansformer的機器翻譯實戰項目。 transformer整體架構 一、輸入部分 詞向量 import torch import t…

網絡層協議:IP

目錄 1、概念 2、關鍵組成部分 2.1 IP地址 2.1.1 概念 2.1.2 主要版本 2.1.3 IP地址分類 2.2 IP數據報&#xff08;IP協議傳輸的基本數據單元&#xff09; 3、工作原理 3.1 路由 3.2 分片與重組 4、相關協議 1、概念 目的&#xff1a;負責在復雜的網絡環境中將數據…

Fastadmin報錯Unknown column ‘xxx.deletetime‘ in ‘where clause

報錯原因 在開啟軟刪除后&#xff0c;設置了表別名&#xff0c;軟刪除字段依舊使用原表名。 解決方法 原代碼 $list $this->model->with([admin, product])->where($where)->order($sort, $order)->paginate($limit);foreach ($list as $row) {$row->ge…

TCN+Transformer+SE注意力機制多分類模型 + SHAP特征重要性分析,pytorch框架

效果一覽 TCNTransformerSE注意力機制多分類模型 SHAP特征重要性分析 TCN&#xff08;時序卷積網絡&#xff09;的原理與應用 1. 核心機制 因果卷積&#xff1a;確保時刻 t t t 的輸出僅依賴 t ? 1 t-1 t?1 及之前的數據&#xff0c;避免未來信息泄露&#xff0c;嚴格保…

Elasticsearch的數據同步

elasticsearch中的數據多是來自數據庫&#xff0c;當數據庫發生改變時&#xff0c;elasticsearch也必須跟著改變&#xff0c;這個就叫做數據同步。 當我們是進行微服務的時候&#xff0c;同時兩個服務不能進行相互調用的時候。就會需要進行數據同步。 方法一&#xff1a;同步…

uniapp 時鐘

<template><view class"clock-view"><view class"clock-container u-m-b-66"><!-- 表盤背景 --><view class"clock-face"></view><!-- 時針 --><view class"hand hour-hand" :style&quo…

【大模型】實踐之1:macOS一鍵部署本地大模型

Ollama + Open WebUI 自動部署腳本解析說明文檔 先看下效果 一、腳本內容 #!/bin/bash set -eMODEL_NAME="qwen:1.8b" LOG_FILE="ollama_run.log" WEBUI_PORT=3000 WEBUI_CONTAINER_PORT=8080 WEBUI_URL="http://localhost:$WEBUI_PORT" DOC…

相機Camera日志實例分析之三:相機Camx【視頻光斑人像錄制】單幀流程日志詳解

【關注我&#xff0c;后續持續新增專題博文&#xff0c;謝謝&#xff01;&#xff01;&#xff01;】 上一篇我們講了&#xff1a; 這一篇我們開始講&#xff1a; 目錄 一、場景操作步驟 二、日志基礎關鍵字分級如下 三、場景日志如下&#xff1a; 一、場景操作步驟 操作步…