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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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; 一、场景操作步骤 操作步…