手机Excel怎么转PDF,Excel转PDF的方法有哪些
Excel转PDF怎么转换?很简单!
Excel文件的兼容性不好,其实大家是可以将Excel转换成PDF格式文件的。
下面我们就来看看Excel转PDF的方法。
方法一:PDF转换器转换法我们能够通过PDF转换器将Excel表格转换成PDF文件。
今天借助的PDF转换器是【嗨格式PDF转换器】,我们一起来看看转换步骤。
首先打开嗨格式PDF 转换器,选择软件界面中的【文件转PDF】功能。
接着选择上方的【Excel转PDF】选项,选择后我们需要在转换器中添加转换的Excel表格文件,点击软件中间区域,在弹出的窗口中选择好文件并打开它即可添加。
接下来我们回到PDF转换界面中,选择设置文件的输出格式、输出类型以及输出形式等。
设置好后点击转换界面右下角的【开始转换】按钮,Excel文件即可进行转换为PDF文件了~等文件后面的状态显示为“完成”时,我们的Excel文件就转换成功啦!方法二:PDF编辑器转换法我们还可以通过另存为的形式将Excel文件转换成PDF文件。
首先打开一份需要转换的Excel表格文件,点击左上方的“文件”选择“另存为”的功能。
随后Excel文件界面会弹出“另存为”的窗口,我们在这个窗口中下拉保存类型选择为“PDF文件格式”,再将文件名及输出目录设置一下。
最后点击“保存”即可。
注意一下,这个方法是转换文件的效率很低。
方法三:复制粘贴法Excel文件还可以通过复制粘贴的方法转换为PDF文件。
我们打开一个PDF编辑器并新建一个PDF文档。
进入PDF编辑器中,点击工具中的“创建PDF”,然后选择“空白页面”点击“创建”,这样就新建了一个空白的PDF文件。
接着打开一份要转换的Excel文件,复制Excel文件中的内容。
回到PDF文件界面中,将刚刚复制的内容粘贴到PDF文件中,再将文件保存即可。
这个方法对于内容多且复杂的Excel文件是不适用的哦~这些就是今天给大家分享的Excel转PDF的一些方法。
学会了这些方法,我们就可以轻松完成文件的转换啦!。
怎样利用手机将excel表格转换成PDF格式
怎样利用手机将excel表格转换成PDF格式
怎样利用手机将excel表格转换成PDF格式在我们办公过程中,会经常遇见将excel表格转换成PDF格式的情况,通常是在电脑上,那么在手机上如何转换呢?跟小编一起看看如何操作吧!
操作环境:小米手机
操作工具:小米手机, PDF转换器,excel文件
1.因为在手机上进行文件格式转换,所以我们在手机应用商店中搜索PDF转换器进行安装使用.
2.选择功能区栏目。
打开之后在下面栏目中选择转为PDF,在功能区选择Excel转PDF。
3.添加文件。
点击Excel转PDF后添加文件,选择需要转换的文件。
点击确定转换。
4.文件上传与转换。
这里先将文件上传,然后上软件会对文件进行内容识别校验,上传成功之后会自动对文件进行转换。
5.文件转换完成。
文件转换完成之后会下载,可以查看文档,点击进去可以查看转换后的文件,另外在功能区书架也可以查看哦。
上面几步就是利用手机将Excel文件转换成PDF文件的操作方法,有需要的朋友可以参考上述步骤进行操作。
excel文档转换成pdf格式的方法
excel文档转换成pdf格式的方法
在办公的时候经常需要把excel文档转换成pdf格式,excel文档具体该如何转换成pdf格式呢?下面是由店铺分享的excel文档转换成pdf格式的方法,以供大家阅读和学习。
excel文档转换成pdf格式的方法:
excel转pdf格式步骤1:在我的电脑中找到编辑好的Excel工作薄,然后右键打开,或者双击都可以运用已经安装好的Office2007程序运行
excel转pdf格式步骤2:在打开的Excel工作薄里,点最左上角的Office按钮,在打开的下拉菜单中点击另存为,然后选择Adobe PDF(A)
excel转pdf格式步骤3:弹出转换PDF的对话框来,先进行一下选择范围,可以选择整个工作薄,也可以选择选定内容,或者某一个工作表,在这里我选择工作表SHEET1,最后点转换为PDF(C) excel转pdf格式步骤4:转换后会弹出另存为ADOBE PDF文件为的对话框,然后选择保存位置及文件名,点保存按钮
excel转pdf格式步骤5:保存之后就有一个转换的过程,最终转换成PDF文件。
Excel中如何将选中的单元格区域保存为PDF文档
Excel中如何将选中的单元格区域保存为PDF文档
PDF文档因为格式不会改变,因此很适合保存下来发送给别人。
当需要将Excel保存为PDF的时候,在保存类型里面选择PDF文档,就可以将当前的工作表保存为一个新的PDF文档。
但是当需要将某一特定单元格区域保存为PDF时,就需要多一步的操作。
1.选中这部分区域。
2.点击“文件”。
3.点击“另存为”,选择需要保存的路径。
4.这时,在保存类型里面选择PDF。
上述步骤都和平时保存为PDF文档一致,在这里需要多一步操作。
5.点击“选项”,在“发布内容”里面选择“所选内容”。
然后点击“确定”。
6.最后点击“保存”。
这时选中的区域就会生成一个PDF文档了,里面的内容就是在工作表里面选中的那部分区域。
关于Excel,如果遇到了什么问题,都可以进行留言,看到以后会第一时间进行回复。
如果觉得好,也欢迎分享给更多的人,一起学习进步。
excel批量转pdf简单方法
excel批量转pdf简单方法
有一个简单的方法可以批量将 Excel 文件转换为 PDF 文件,步骤如下:
1. 打开 Excel 文件夹,选中你要转换的 Excel 文件。
2. 在文件资源管理器中,点击“文件”选项卡,并选择“打印”或“打印设置”。
3. 在打印设置页面中,选择一个虚拟打印机,比如Adobe PDF、Microsoft Print to PDF 或者其它的虚拟打印机。
4. 点击“打印”按钮。
5. 在弹出的“另存为”窗口中,选择要保存的位置和文件名,并点击“保存”。
6. Excel 文件将被转换为 PDF 文件,并自动保存在你选择的位置。
7. 重复以上步骤,将其它的 Excel 文件也转换为 PDF。
这种方法适用于 Windows 操作系统上的 Excel 2010 及更高版本。
如果你使用的是 Mac 或者其它版本的 Excel,可能会有一些差异,请参考相应的文档或教程。
itext5 excel转pdf 合并单元格
在iText5中,将Excel转换为PDF并合并单元格涉及几个步骤。
但首先,需要明确的是,iText5是一个用于处理PDF文件的Java库,它不直接支持Excel到PDF的转换。
通常,你需要使用其他库(如Apache POI)来读取Excel文件,然后使用iText5来创建PDF。
然而,如果你已经有了Excel数据,并且想要以编程方式在PDF中创建表格并合并单元格,你可以按照以下步骤使用iText5:
1. 创建PdfPTable对象:首先,你需要创建一个PdfPTable对象,并设置表格的列数。
2. 添加PdfPCell对象:接下来,创建PdfPCell对象,设置单元格的内容,然后将它们添加到PdfPTable对象中。
3. 合并单元格:在iText5中,合并单元格通常是通过在添加单元格时跳过某些单元格来实现的。
例如,如果你想要合并第一行的前两个单元格,你可以先添加一个占据两列的单元格,然后再继续添加其他单元格。
4. 将PdfPTable添加到文档中:最后,将PdfPTable对象添加到你的PDF文档中。
5. 关闭文档:完成所有操作后,确保关闭PDF文档。
这里需要注意的是,iText5并不直接提供合并单元格的明确方法,如Excel中的“合并单元格”功能。
相反,它是通过在表格中添加跨越多列的单元格来实现类似的效果。
excel转pdf技巧之如何添加pdf虚拟打印机
excel转pdf技巧之如何添加pdf虚拟打印机excel转pdf技巧之如何添加pdf虚拟打印机excel是我们最常⽤的绘制表格的⼯具,但是,为了⽅便⼈们查看,我们常常需要将绘制好的表格转换成pdf格式,但是要怎么转呢,今天⼩编想向⼤家介绍⼀种新的⽅法——通过使⽤pdf虚拟打印机来转换。
我们都知道打印机,但是虚拟打印机是什么呢?其实他的⼯作原理也跟打印机差不多,就是通过在系统中安装⼀个打印机驱动,在选择打印的时候可以接收到打印的内容和具体的样式,然后将其进⾏处理后保存为PDF⽂件。
⽽且虚拟打印机作为⼀个插件,可直接在Microsoft office中使⽤,实现⽂档间的转换。
下⾯来介绍迅捷pdf虚拟打印机的安装及使⽤⽅法。
⼀、迅捷pdf虚拟打印机的安装⽅法1、在官⽹上下载迅捷pdf虚拟打印机,并将其安装到电脑上。
2、安装完成后,我们就可以对其进⾏配置设定,改变最终pdf⽂档转换的⼀些属性、元数据。
当然如果选择遵照默认设置,就可以直接跳过下⾯的步骤进⼊使⽤⽅法的学习。
3、在安装完成后,点击“配置设定”,进⼊设定页⾯。
4、在“保存”选项中,可以选择转换⽂档的格式。
不仅可以转换成pdf格式,也可以转换成其他的⽂本格式。
5、在“pdf”选项中,勾选“加密pdf以保护其内容”就可以加设密码。
在“允许⽤户”中可以设置访问权限。
⼆、迅捷pdf虚拟打印机的使⽤⽅法1、做好相关的准备⼯作后,打开要转换的excel⽂档。
单击office按钮,选择“打印”功能,进⼊“打印”页⾯。
2、在弹出的打印窗⼝中,在“名称”栏中选择“迅捷pdf打印机”点击确定。
3、确定后页⾯后弹出如下窗⼝,直接点击“保存”即可。
4、此时⽂件类型就会⾃动变成pdf格式了,最后选择保存路径后点击“保存”就可以在相应位置查看转换好的⽂件。
以上就是迅捷pdf虚拟打印机的安装⽅法和使⽤⽅法,希望对⼤家有所帮助。
如何将手机中的Excel表格转换为PDF文件
如何将手机中的Excel表格转换为PDF文件在编辑完Excel表格后,希望不要让别人随便改动,很多人会将其转换为PDF格式,大家都知道电脑的转换方法啊,但是我们不可能一直把电脑戴在身边吧,所以今天就和大家讲讲手机怎么将Excel表格转换为PDF文件。
手机转换工具: PDF转换器
操作步骤:
1:首先在手机的应用市场或应用宝搜索安装PDF转换器,然后运行转换器。
2:运行转换器后在“转为PDF”页面选择“Excel转PDF”。
3:这时会出现一个添加文件的页面,选择好需要转换的Excel 文件。
4:选择好文件后点击文件名称,会出现一个确定转换的页面,看一下文件是否是需要的文件,然后点击确定转换。
5:等待一会转换完成后,在新出现的页面点击查看文档就可以查看转换后的文件了。
6:这时就可以阅读转换后的文件了。
到这Excel转PDF的转换步骤就结束了,有需要的可以自己去试试。
总是excel转pdf表格框线不完整?这2个妙招能解决
总是excel转pdf表格框线不完整?这2个妙招能解决应该有不少小伙伴在工作中需要制作各种Excel表格,并且完成后还得给上司过目,但是在这过程中,总担忧别人会不小心触碰到键盘,而修改到其中的数值,这样的话前面的努力可就白费了。
那有什么方法可以解决这一难题呢?其实很简单,只要把Excel转为不易编辑的PDF格式即可。
不过有很多小伙伴初入职场,不太清楚Excel转PDF怎么转,那就让我来告诉你三个既简单又便捷的方法吧,有需要的话可以跟着我的步骤一起操作起来哦!电脑端方法:借助万能文字识别实现Excel转PDF有些小伙伴转换数量可能比较多,那么可以尝试使用万能文字识别这款软件,因为它支持批量导入处理。
同时,它虽然主打的是文字识别功能,但也拥有着翻译文档图片、为证件照换背景、转换文件格式等功能,为大家提供了一站式的服务。
详细操作流程如下所示:步骤一:打开软件,在左侧工具栏中选择【PDF转换】工具,接着根据本次需要,在右侧选择【Excel转PDF】功能;步骤二:它有两种导入文件的方式,一种是点击【添加Excel文件/文件夹】按键去选择,另一种是直接将其拖拽到软件中;步骤三:等文件导入成功后,有遗漏的可以继续【添加Excel文件】,确认无误后点击【开始转换】就完成啦。
该软件为了迎合如今移动办公的潮流,还上线了app端,你们可以直接导入微信、QQ、钉钉等平台中的文件进行转换格式、编辑等处理~网页端方法:借助百度文库实现Excel转PDF文库可以说是百度中的一个小分组,为学生以及想提升自己的打工人提供了丰富的专业知识,也支持让大家上传自己的文档分享经验,而其中自带的格式转换功能,就是为了让大家更方便、快速的上传文档而提供的,无需借助其它工具就能轻松完成。
详细操作流程如下所示:步骤一:浏览器中搜索百度文库并打开,在首页右侧点击【格式转换】;步骤二:接着就会跳转到以下界面,我们选择【Excel转PDF】;步骤三:最后将Excel文件拖入界面中或点击【上传Excel文件】,待转换完成【下载PDF文件】就大功告成!大家看完我以上的分享,学会Excel转PDF怎么转了吗?如果有其它更好的方式你们也不要吝啬,在评论区分享出来吧。
用手机wps生成pdf文档
如何用手机简单生成一个PDF
文档
首先要在手机下载WPS,下载完后接
着看后面的步骤
第一步,点箭头指向
的圆圈
第二步点新建PDF
第三步,点图片转PDF
第四步,选择你想选的图片并点下一步
最后一步点保存并且编辑好文件名就可以了
前一步点完保存之后输入文档名称,并且点输出PDF文档
紧接着它就会出现在你的文档页面处了
如何用邮箱提交PDF文档
第一步:下载QQ邮箱
如果已经注册好了的
就不用注册了,未注
册过的可以自己用自
己的QQ帐号注册
第二步:点击已经保存好了的PDF文档,然后点分享
第三步:点邮箱发送
第四步:点以文件发送
第五步:点通过邮箱发送
第六步:编辑好收件人信息再点发送就可以了
看完后可以自己尝试一下,如果自己有其他方法也能够通过邮箱发送PDF文档的可以用自己的方法,这里只是提供给大家一种我觉得最简单的方法给大家参考。
excel转pdf变形
Excel转PDF变形的原因可能是由于在转换过程中,Excel表格的列宽或行高超出了PDF 页面的大小限制。
为了解决这个问题,你可以尝试以下方法:
1. 调整Excel表格的列宽和行高,使其适应PDF页面大小。
你可以在Excel中手动调整列宽和行高,或者使用VBA代码自动调整。
2. 在转换过程中,选择“适合页面大小”选项。
这样,Excel表格将被缩放以适应PDF页面大小,但可能会导致部分内容无法显示。
3. 将Excel表格分割成多个部分,然后分别转换为PDF文件。
这样可以避免在一个PDF 文件中出现变形的问题。
4. 使用专业的PDF转换工具,如Adobe Acrobat、Wondershare PDFelement等。
这些工具通常提供更多的选项来处理转换过程中可能出现的问题。
如何将vivo手机中的Word文件转换成PDF
如何将vivo手机中的Word文件转换成PDF 手机在我们的生活中充当了很重要的角色,有时候在外面需要我们将Word文件发给同事,为了文字不错位变形,没有电脑操作,于是就把Word转成PDF文件进行发送,那在手机中怎样操作可以将word 文件转换成PDF呢?下面是一些操作小技巧和大家分享一下。
1.在手机的应用商店里搜索PDF转换器工具下载使用。
2.安装完成之后打开,在底部有四个栏目板块选择其他文件转换PDF。
3.选择功能区中选择Word转PDF,然后添加文件,之后会出现通过校验开始上传字样。
4.上传完文件后会出现确定转换字样,点击确定转换。
5.稍微等一会转换就完成了,会跳出另一个页面查看文档的字样就可以查看转换后的文件了,或者在首页书架里面也可以查看转换后的文件。
上面就是在手机中将word文件转换成PDF的操作方法,另外还可以实现很多其他文件格式的转换,需要的朋友赶快下载安装使用吧。
pymupdf excel转pdf
要使用pymupdf将Excel文件转换为PDF,首先需要安装pymupdf库。
可以使用以下命令进行安装:```bashpip install pymupdf```接下来,你可以使用以下代码将Excel文件转换为PDF:```pythonimport osimport fitzfrom openpyxl import load_workbookdef excel_to_pdf(input_file, output_file):# 加载Excel文件workbook = load_workbook(input_file)# 获取第一个工作表sheet = workbook.active# 创建一个新的PDF文档pdf = fitz.open()# 创建一个新页面page = pdf.new_page()# 设置页面大小和边距page.set_margins(a=10, b=10, c=10, d=10)page.set_size((page.rect.width, page.rect.height - 20))# 遍历工作表中的所有单元格并添加到PDF页面中for row in sheet.iter_rows():for cell in row:text = str(cell.value)if text:# 在PDF页面上添加文本page.insert_text((10, page.rect.height - 20), text, fontsize=10)# 减少页面高度page.set_size((page.rect.width, page.rect.height - 10))# 保存PDF文件pdf.save(output_file)pdf.close()# 调用函数,将Excel文件转换为PDFinput_file = "example.xlsx"output_file = "example.pdf"excel_to_pdf(input_file, output_file)```请将`input_file`变量设置为你的Excel文件路径,将`output_file`变量设置为你希望保存的PDF 文件路径。
freemarker excel转pdf
freemarker excel转pdfFreeMarker 是一种用于生成文本输出的模板引擎,通常与Java 一起使用。
在这里,我将提供一个简单的示例,演示如何使用FreeMarker、Apache POI 和Apache PDFBox 将Excel 文件转换为PDF 文件。
请注意,你需要确保已经添加适当的库依赖项。
1.添加依赖项:在Maven 项目中,确保你的pom.xml 文件中包含以下依赖项:<dependencies><!--FreeMarker --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency><!--Apache POI --><dependency><groupId>orgapache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><!--Apache PDFBox --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version></dependency></dependencies>2.Java 代码示例:下面是一个简单的Java 代码示例,演示如何使用FreeMarker、Apache POI 和Apache PDFBox 将Excel 转换为PDF。
opensagres.xdocreport excel 转pdf
使用opensagres.xdocreport库,可以将Excel文件转换为PDF文件。
以下是一个简单的示例代码:```javaimport ermodel.*;import ermodel.XSSFWorkbook;import ermodel.*;import org.apache.poi.xwpf.converter.pdf.*;import java.io.*;public class ExcelToPdf {public static void main(String[] args) throws Exception {// 读取Excel文件FileInputStream inputStream = new FileInputStream("example.xlsx");Workbook workbook = new XSSFWorkbook(inputStream);Sheet sheet = workbook.getSheetAt(0);int numberOfRows = sheet.getPhysicalNumberOfRows();int numberOfColumns = sheet.getRow(0).getPhysicalNumberOfCells();// 创建Word文档并添加表格数据XWPFDocument document = new XWPFDocument();XWPFTable table = document.createTable(numberOfRows, numberOfColumns);for (int i = 0; i < numberOfRows; i++) {Row row = sheet.getRow(i);for (int j = 0; j < numberOfColumns; j++) {Cell cell = row.getCell(j);table.getRow(i).getCell(j).setText(cell.toString());}}// 将Word文档转换为PDF文件OutputStream outStream = new FileOutputStream("example.pdf");XWPFConverter.getInstance().convert(document, outStream, null);outStream.close();document.close();workbook.close();inputStream.close();}}```上述代码中,首先使用Apache POI库读取Excel文件,然后创建一个Word文档并将Excel表格数据添加到Word文档中。
记Excel模板导出并转为PDF,支持批量打包下载。
记Excel模板导出并转为PDF,⽀持批量打包下载。
最近项⽬⽤到了PDF导出,主要是后端完成,主要是个⼈不会设计PDF模板,效果太丑了,就想到了⽤Excel转PDF,且不⽤再设置样式,在模板中设置好了就可以直接套⽤了,记录下简单思路:1. ⽤excel设计好模板,因为涉及到多个表格需要动态插⼊数据,所以需要注意表格⾏列的计算。
2. 将excel转为PDF⽂档。
3. 若是存在多个PDF,则进⾏ZIP打包再提供下载,基于spring boot提供下载。
⾸先是excel模板样式预览PDF预览下载预览⾸先引⼊依赖<!-- https:///artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.2</version></dependency><!-- https:///artifact/com.itextpdf/itext-asian --><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency><!-- https:///artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.0.0</version></dependency><!-- https:///artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.0.0</version></dependency>服务层代码/*** PDF导出** @param form 表单* @param response 响应* @throws DocumentException 异常* @throws IOException 异常*/public void pdfExport(BaseForm form, HttpServletResponse response) throws DocumentException, IOException {//将zip以流的形式输出到前台response.setContentType("application/octet-stream");String keyword = form.getKeyword();ApiRegisterVo vo = null;if (StringUtils.isNotBlank(keyword)) {vo = JSON.parseObject(keyword, ApiRegisterVo.class);}// 数据列表List<ApiRegisterVo> vos = findList(vo);if (ObjectUtils.isNotEmpty(vos)) { // 不为空才导出if (vos.size() == 1) { // 单⽂件导出ApiRegisterVo temp = vos.get(0);ApiRegisterDetailVo detailVo = detail(temp.getId(), vo.getGatewayAddress());response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(detailVo.getName() + System.currentTimeMillis(), "UTF-8") + ".pdf");Workbook workbook = excelService.openGatewayApiWorkbook(detailVo);byte[] bytes = ExcelToPdfUtil.excelToPdf(workbook, false, 0.8f);response.getOutputStream().write(bytes);} else { // 批量压缩导出// pdf数据包列表List<Map<String, byte[]>> dataPackage = new ArrayList<>();// 单个数据,key为⽂件名Map<String, byte[]> map;// ⽂件设置,附件形式打开response.setHeader("content-disposition", "attachment; filename="+ URLEncoder.code("GatewayInfo" + System.currentTimeMillis(), "UTF-8") + ".zip");for (ApiRegisterVo registerVo : vos) {ApiRegisterDetailVo detailVo = detail(registerVo.getId(), vo.getGatewayAddress());Workbook workbook = excelService.openGatewayApiWorkbook(detailVo);byte[] bytes = ExcelToPdfUtil.excelToPdf(workbook, false, 0.8f);map = new HashMap<>();map.put(detailVo.getName() + System.currentTimeMillis() + ".pdf", bytes);dataPackage.add(map);}byte[] zipByte = ZipUtil.batchZipByte(dataPackage);response.getOutputStream().write(zipByte);}response.flushBuffer();}}excel导出⽅法/*** 根据模板导出excel** @param vo 数据列表* @return⼯作簿*/public Workbook openGatewayApiWorkbook(ApiRegisterDetailVo vo) throws IOException {String templatePath = "template/openGatewayApi.xlsx";Workbook workbook = ExcelUtils.getWorkBook(templatePath);// 字体信息assert workbook != null;Font font = workbook.createFont();font.setFontName("宋体");font.setBold(true);font.setFontHeightInPoints((short) 12);CellStyle workbookCellStyle = workbook.createCellStyle();workbookCellStyle.setWrapText(true);workbookCellStyle.setFont(font);workbookCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 写⼊第⼀页sheet中Sheet sheet0 = workbook.getSheetAt(0);// 名称setMergedCellValue(sheet0, 0, 0, vo.getName());// 基本信息,固定⾏信息优先填写好setMergedCellValue(sheet0, 2, 1, vo.getName());setMergedCellValue(sheet0, 3, 1, vo.getMethods());setMergedCellValue(sheet0, 4, 1, vo.getPath());setMergedCellValue(sheet0, 5, 1, vo.getRequestUrl() == null ? "" : vo.getRequestUrl());setMergedCellValue(sheet0, 6, 1, vo.getVersion() == null ? "" : vo.getVersion());setMergedCellValue(sheet0, 7, 1, vo.getNote() == null ? "" : vo.getNote());setMergedCellValue(sheet0, 15, 0, vo.getRequestParamsExample() == null ? "": vo.getRequestParamsExample().getExample() == null ? "" : vo.getRequestParamsExample().getExample());setMergedCellValue(sheet0, 22, 0, vo.getPathParamsExample() == null ? "": vo.getPathParamsExample().getExample() == null ? "" : vo.getPathParamsExample().getExample());setMergedCellValue(sheet0, 30, 0, vo.getResponseParamsExample() == null ? "": vo.getResponseParamsExample().getExample() == null ? "" : vo.getResponseParamsExample().getExample()); setMergedCellValue(sheet0, 34, 2, vo.getMoreStateCodeUrl() == null ? "" : vo.getMoreStateCodeUrl());// 请求头List<ApiParams> requestHeaderParams = vo.getRequestHeaderParams();// 记录请求头动态添加的⾏数int requestHeaderParamsAddRow = 0;// 请求参数List<ApiParams> requestParams = vo.getRequestParams();// 记录请求参数动态添加的⾏数int requestParamsAddRow = 0;// 路径参数List<ApiParams> pathParams = vo.getPathParams();// 记录路径参数动态添加的⾏数int pathParamsAddRow = 0;// 响应头List<ApiParams> responseHeaderParams = vo.getResponseHeaderParams();// 记录响应头动态添加的⾏数int responseHeaderParamsAddRow = 0;// 响应参数List<ApiParams> responseParams = vo.getResponseParams();// 记录响应参数动态添加的⾏数int responseParamsAddRow = 0;// 状态码List<ApiErrcode> apiErrcodes = vo.getApiErrcodes();// 记录状态码动态添加的⾏数int apiErrcodesAddRow = 0;// 表格数据填充if (ObjectUtils.isNotEmpty(requestHeaderParams)) { // 请求头// 计算起始⾏和获取样式⾏int startRow = 11;// 样式⾏requestHeaderParamsAddRow = getParamsAddRow(sheet0, requestHeaderParams, requestHeaderParamsAddRow, startRow);}if (ObjectUtils.isNotEmpty(requestParams)) { // 请求参数// 计算起始⾏,原14+请求头添加⾏int startRow = 14 + (Math.max(requestHeaderParamsAddRow - 1, 0));// 样式⾏Row styleRow = sheet0.getRow(startRow - 1);if (requestParams.size() > 1) { // 动态插⼊⾏sheet0.shiftRows(startRow, sheet0.getLastRowNum(), requestParams.size() - 1, true, false);}requestParamsAddRow = getParamsAddRow(sheet0, requestParams, requestParamsAddRow, startRow, styleRow);}if (ObjectUtils.isNotEmpty(pathParams)) { // 路径参数// 计算起始⾏,原21+请求头添加⾏+请求参数添加⾏int startRow = 21 + (Math.max(requestHeaderParamsAddRow - 1, 0)) + (Math.max(requestParamsAddRow - 1, 0));// 样式⾏Row styleRow = sheet0.getRow(startRow - 1);pathParamsAddRow = getParamsAddRow(sheet0, pathParams, pathParamsAddRow, startRow, styleRow);}if (ObjectUtils.isNotEmpty(responseHeaderParams)) { // 响应头// 计算起始⾏,原26+请求头添加⾏+请求参数添加⾏+路径参数添加⾏int startRow = 26 + (Math.max(requestHeaderParamsAddRow - 1, 0)) + (Math.max(requestParamsAddRow - 1, 0))+ (Math.max(pathParamsAddRow - 1, 0));// 样式⾏Row styleRow = sheet0.getRow(startRow - 1);if (responseHeaderParams.size() > 1) { // 动态插⼊⾏sheet0.shiftRows(startRow, sheet0.getLastRowNum(), pathParams.size() - 1, true, false);}for (ApiParams apiParams : responseHeaderParams) {// 插⼊的⾏号int rowNum = responseHeaderParamsAddRow + (startRow - 1);Row newRow = sheet0.getRow(rowNum) == null ? sheet0.createRow(rowNum) : sheet0.getRow(rowNum);newRow.setRowStyle(styleRow.getRowStyle());newRow.setHeight(styleRow.getHeight());Cell cell0 = getCell(newRow, 0);cell0.setCellStyle(getCell(styleRow, 0).getCellStyle());cell0.setCellValue(apiParams.getName());Cell cell1 = getCell(newRow, 1);cell1.setCellStyle(getCell(styleRow, 1).getCellStyle());cell1.setCellValue(apiParams.getExample() == null ? "" : apiParams.getExample());Cell cell2 = getCell(newRow, 2);cell2.setCellStyle(getCell(styleRow, 2).getCellStyle());Cell cell3 = getCell(newRow, 3);cell3.setCellStyle(getCell(styleRow, 3).getCellStyle());cell3.setCellValue(apiParams.getNote() == null ? "" : apiParams.getNote());Cell cell4 = getCell(newRow, 4);cell4.setCellStyle(getCell(styleRow, 4).getCellStyle());if (!ExcelUtils.isMergedRegion(sheet0, newRow.getRowNum(), cell1.getColumnIndex())) {// 合并单元格CellRangeAddress cellAddresses1 = new CellRangeAddress(newRow.getRowNum(), newRow.getRowNum(), cell1.getColumnIndex(), cell2.getColumnIndex()); sheet0.addMergedRegion(cellAddresses1);}if (!ExcelUtils.isMergedRegion(sheet0, newRow.getRowNum(), cell3.getColumnIndex())) {// 合并单元格CellRangeAddress cellAddresses2 = new CellRangeAddress(newRow.getRowNum(), newRow.getRowNum(), cell3.getColumnIndex(), cell4.getColumnIndex()); sheet0.addMergedRegion(cellAddresses2);}responseHeaderParamsAddRow++;}}if (ObjectUtils.isNotEmpty(responseParams)) { // 响应参数// 计算起始⾏,原29+请求头添加⾏+请求参数添加⾏+路径参数添加⾏+响应头参数添加⾏int startRow = 29 + (Math.max(requestHeaderParamsAddRow - 1, 0)) + (Math.max(requestParamsAddRow - 1, 0))+ (Math.max(pathParamsAddRow - 1, 0)) + (Math.max(responseHeaderParamsAddRow - 1, 0));// 样式⾏responseParamsAddRow = getParamsAddRow(sheet0, responseParams, responseParamsAddRow, startRow);}if (ObjectUtils.isNotEmpty(apiErrcodes)) { // API状态码// 计算起始⾏,原37+请求头添加⾏+请求参数添加⾏+路径参数添加⾏+响应头参数添加⾏+响应参数添加⾏int startRow = 37 + (Math.max(requestHeaderParamsAddRow - 1, 0)) + (Math.max(requestParamsAddRow - 1, 0))+ (Math.max(pathParamsAddRow - 1, 0)) + (Math.max(responseHeaderParamsAddRow - 1, 0))+ (Math.max(responseParamsAddRow - 1, 0));Row styleRow = sheet0.getRow(startRow - 1);if (apiErrcodes.size() > 1) { // 动态插⼊⾏,此表格最后⾏为空⾏,会⽆法识别到,所以从上⼀⾏开始下移插⼊sheet0.shiftRows(startRow - 1, sheet0.getLastRowNum(), apiErrcodes.size() - 1, true, false);}for (ApiErrcode errcode : apiErrcodes) {// 插⼊的⾏号int rowNum = apiErrcodesAddRow + (startRow - 1);Row newRow = sheet0.getRow(rowNum) == null ? sheet0.createRow(rowNum) : sheet0.getRow(rowNum);newRow.setRowStyle(styleRow.getRowStyle());newRow.setHeight(styleRow.getHeight());Cell cell0 = getCell(newRow, 0);cell0.setCellStyle(getCell(styleRow, 0).getCellStyle());cell0.setCellValue(errcode.getCode());Cell cell1 = getCell(newRow, 1);cell1.setCellStyle(getCell(styleRow, 1).getCellStyle());cell1.setCellValue(errcode.getNote() == null ? "" : errcode.getNote());Cell cell2 = getCell(newRow, 2);cell2.setCellStyle(getCell(styleRow, 2).getCellStyle());Cell cell3 = getCell(newRow, 3);cell3.setCellStyle(getCell(styleRow, 3).getCellStyle());apiErrcodesAddRow = getCodeAddRow(sheet0, apiErrcodesAddRow, styleRow, newRow, cell1);}}workbook.close();return workbook;}/*** 合并单元格** @param sheet0 ⼯作簿* @param addRow 添加⾏* @param styleRow 样式⾏* @param newRow 插⼊⾏* @param cell1 单元格* @return添加⾏*/private int getCodeAddRow(Sheet sheet0, int addRow, Row styleRow, Row newRow, Cell cell1) {Cell cell4 = getCell(newRow, 4);cell4.setCellStyle(getCell(styleRow, 4).getCellStyle());if (!ExcelUtils.isMergedRegion(sheet0, newRow.getRowNum(), cell1.getColumnIndex())) {// 合并单元格CellRangeAddress cellAddresses = new CellRangeAddress(newRow.getRowNum(), newRow.getRowNum(), cell1.getColumnIndex(), cell4.getColumnIndex()); sheet0.addMergedRegion(cellAddresses);}addRow++;return addRow;}/*** 提取重复项** @param sheet0 ⼯作簿* @param paramsList 参数列表* @param addRow 添加⾏* @param startRow 样式⾏* @param styleRow 样式⾏* @return参数添加⾏*/private int getParamsAddRow(Sheet sheet0, List<ApiParams> paramsList, int addRow, int startRow, Row styleRow) {for (ApiParams apiParams : paramsList) {// 插⼊的⾏号int rowNum = addRow + (startRow - 1);Row newRow = sheet0.getRow(rowNum) == null ? sheet0.createRow(rowNum) : sheet0.getRow(rowNum);newRow.setRowStyle(styleRow.getRowStyle());newRow.setHeight(styleRow.getHeight());// 插⼊数据Cell cell0 = getCell(newRow, 0);cell0.setCellStyle(getCell(styleRow, 0).getCellStyle());cell0.setCellValue(apiParams.getName());Cell cell1 = getCell(newRow, 1);cell1.setCellStyle(getCell(styleRow, 1).getCellStyle());cell1.setCellValue(apiParams.getRequired());Cell cell2 = getCell(newRow, 2);cell2.setCellStyle(getCell(styleRow, 2).getCellStyle());cell2.setCellValue(apiParams.getDataType());Cell cell3 = getCell(newRow, 3);cell3.setCellStyle(getCell(styleRow, 3).getCellStyle());cell3.setCellValue(apiParams.getExample() == null ? "" : apiParams.getExample());Cell cell4 = getCell(newRow, 4);cell4.setCellStyle(getCell(styleRow, 4).getCellStyle());cell4.setCellValue(apiParams.getNote() == null ? "" : apiParams.getNote());addRow++;}return addRow;}/*** 提取重复项** @param sheet0 ⼯作簿* @param paramsList 参数列表* @param addRow 添加⾏* @param startRow 开始⾏* @return参数添加⾏*/private int getParamsAddRow(Sheet sheet0, List<ApiParams> paramsList, int addRow, int startRow) {Row styleRow = sheet0.getRow(startRow - 1);if (paramsList.size() > 1) { // 动态插⼊⾏sheet0.shiftRows(startRow, sheet0.getLastRowNum(), paramsList.size() - 1, true, false);}for (ApiParams apiParams : paramsList) {// 插⼊的⾏号int rowNum = addRow + (startRow - 1);Row newRow = sheet0.getRow(rowNum) == null ? sheet0.createRow(rowNum) : sheet0.getRow(rowNum); newRow.setRowStyle(styleRow.getRowStyle());newRow.setHeight(styleRow.getHeight());Cell cell0 = getCell(newRow, 0);cell0.setCellStyle(getCell(styleRow, 0).getCellStyle());cell0.setCellValue(apiParams.getName());Cell cell1 = getCell(newRow, 1);cell1.setCellStyle(getCell(styleRow, 1).getCellStyle());cell1.setCellValue(apiParams.getRequired());Cell cell2 = getCell(newRow, 2);cell2.setCellStyle(getCell(styleRow, 2).getCellStyle());cell2.setCellValue(apiParams.getExample() == null ? "" : apiParams.getExample());Cell cell3 = getCell(newRow, 3);cell3.setCellStyle(getCell(styleRow, 3).getCellStyle());cell3.setCellValue(apiParams.getNote() == null ? "" : apiParams.getNote());addRow = getCodeAddRow(sheet0, addRow, styleRow, newRow, cell3);}return addRow;}/*** 设置合并单元格值** @param sheet ⼯作表* @param row ⾏* @param column 列* @param value 值*/private void setMergedCellValue(Sheet sheet, int row, int column, Object value) {Cell cell = ExcelUtils.getMergedRegion(sheet, row, column);if (cell != null && value != null) {cell.setCellValue(ExcelUtils.getCellValue(cell) + value);}}excel⼯具类package com.edp.gateway.open.utils;import ng3.StringUtils;import ermodel.HSSFClientAnchor;import ermodel.HSSFPicture;import ermodel.HSSFShape;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;import org.apache.poi.ooxml.POIXMLDocumentPart;import ermodel.Cell;import ermodel.CellType;import ermodel.PictureData;import ermodel.Row;import ermodel.Sheet;import ermodel.Workbook;import org.apache.poi.ss.util.CellRangeAddress;import ermodel.XSSFClientAnchor;import ermodel.XSSFDrawing;import ermodel.XSSFPicture;import ermodel.XSSFShape;import ermodel.XSSFSheet;import ermodel.XSSFWorkbook;import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; import org.springframework.core.io.ClassPathResource;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.List;import java.util.Map;public class ExcelUtils {/*** 获取excel** @param filePath ⽂件路径* @return Workbook*/public static Workbook getWorkBook(String filePath) {if (StringUtils.isBlank(filePath)) {return null;}Workbook workbook = null;try {ClassPathResource cpr = new ClassPathResource(filePath);try (InputStream is = cpr.getInputStream()) {if (filePath.endsWith("xls")) {// 2003workbook = new HSSFWorkbook(is);} else if (filePath.endsWith("xlsx")) {// 2007workbook = new XSSFWorkbook(is);}}} catch (IOException e) {e.printStackTrace();}return workbook;}/*** 读取excel中的图⽚和位置** @param workbook excel* @param sheet ⼯作表* @return Map<String, PictureData>*/public static Map<String, PictureData> getPictures(Workbook workbook, Sheet sheet) { Map<String, PictureData> map = new HashMap<>();if (workbook instanceof HSSFWorkbook) {map = getPictures2003((HSSFSheet) sheet);} else if (workbook instanceof XSSFWorkbook) {map = getPictures2007((XSSFSheet) sheet);}return map;}/*** 读取excel中的图⽚和位置(xls)** @param sheet ⼯作表* @return Map<String, PictureData>*/public static Map<String, PictureData> getPictures2003(HSSFSheet sheet) {Map<String, PictureData> map = new HashMap<>();List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();for (HSSFShape shape : list) {if (shape instanceof HSSFPicture) {HSSFPicture picture = (HSSFPicture) shape;HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();// ⾏号-列号String key = cAnchor.getRow1() + "-" + cAnchor.getCol1();map.put(key, picture.getPictureData());}}return map;}/*** 读取excel中的图⽚和位置(xlsx)** @param sheet ⼯作表* @return Map<String, PictureData>*/public static Map<String, PictureData> getPictures2007(XSSFSheet sheet) { Map<String, PictureData> map = new HashMap<>();List<POIXMLDocumentPart> list = sheet.getRelations();for (POIXMLDocumentPart part : list) {if (part instanceof XSSFDrawing) {XSSFDrawing drawing = (XSSFDrawing) part;List<XSSFShape> shapes = drawing.getShapes();for (XSSFShape shape : shapes) {if (shape instanceof XSSFPicture) {XSSFPicture picture = (XSSFPicture) shape;XSSFClientAnchor anchor = picture.getPreferredSize();CTMarker marker = anchor.getFrom();String key = marker.getRow() + "-" + marker.getCol();map.put(key, picture.getPictureData());}}}}return map;}/*** 获取excel中每列宽度的占⽐** @param sheet ⼯作表* @return float[]*/public static float[] getColWidth(Sheet sheet) {int rowNum = getMaxColRowNum(sheet);Row row = sheet.getRow(rowNum);int cellCount = row.getPhysicalNumberOfCells();int[] colWidths = new int[cellCount];int sum = 0;for (int i = row.getFirstCellNum(); i < cellCount; i++) {Cell cell = row.getCell(i);if (cell != null) {colWidths[i] = sheet.getColumnWidth(i);sum += sheet.getColumnWidth(i);}}float[] colWidthPer = new float[cellCount];for (int i = row.getFirstCellNum(); i < cellCount; i++) {//对数字进⾏操作前先校验是否为0if (sum != 0) {colWidthPer[i] = (float) colWidths[i] / sum * 100;}}return colWidthPer;}/*** 获取合并单元格** @param sheet ⼯作表* @param row ⾏* @param column 列* @return Cell*/public static Cell getMergedRegion(Sheet sheet, int row, int column) {int sheetMergeCount = sheet.getNumMergedRegions();for (int i = 0; i < sheetMergeCount; i++) {CellRangeAddress ca = sheet.getMergedRegion(i);int firstColumn = ca.getFirstColumn();int lastColumn = ca.getLastColumn();int firstRow = ca.getFirstRow();int lastRow = ca.getLastRow();if (row >= firstRow && row <= lastRow) {if (column >= firstColumn && column <= lastColumn) {Row fRow = sheet.getRow(firstRow);return fRow.getCell(firstColumn);}}}return null;}/*** 获取单元格的值** @param cell 单元格* @return String*/public static String getCellValue(Cell cell) {if (cell == null) {return "";}if (cell.getCellType() == CellType.STRING) {return cell.getStringCellValue();} else if (cell.getCellType() == CellType.BOOLEAN) {return String.valueOf(cell.getBooleanCellValue());} else if (cell.getCellType() == CellType.FORMULA) {return cell.getCellFormula();} else if (cell.getCellType() == CellType.NUMERIC) {double value = cell.getNumericCellValue();return String.valueOf((long) value);}return "";}/*** 判断指定的单元格是否是合并单元格** @param sheet ⼯作表* @param row ⾏下标* @param column 列下标* @return boolean*/public static boolean isMergedRegion(Sheet sheet, int row, int column) {int sheetMergeCount = sheet.getNumMergedRegions();for (int i = 0; i < sheetMergeCount; i++) {CellRangeAddress range = sheet.getMergedRegion(i);int firstColumn = range.getFirstColumn();int lastColumn = range.getLastColumn();int firstRow = range.getFirstRow();int lastRow = range.getLastRow();if (row >= firstRow && row <= lastRow) {if (column >= firstColumn && column <= lastColumn) {return true;}}}return false;}/*** 获取合并单元格宽⾼** @param sheet ⼯作表* @param row ⾏* @param column 列* @return int[]*/public static float[] getMergedRegionSize(Sheet sheet, int row, int column) { int[] matrix = getMergedRegionMatrix(sheet, row, column);float[] size = new float[2];// 合并单元格⾼float height = 0;// 合并单元格宽float width = 0;for (int y = matrix[0]; y <= matrix[2]; y++) {Row rowY = sheet.getRow(y);if (rowY != null) {height += sheet.getRow(y).getHeightInPoints();}}for (int x = matrix[1]; x <= matrix[3]; x++) {width += sheet.getColumnWidthInPixels(x);}size[0] = height;size[1] = width;return size;}/*** 获取合并单元格矩阵** @param sheet ⼯作表* @param row ⾏* @param column 列* @return int[]*/public static int[] getMergedRegionMatrix(Sheet sheet, int row, int column) { int sheetMergeCount = sheet.getNumMergedRegions();int[] matrix = new int[4];for (int i = 0; i < sheetMergeCount; i++) {CellRangeAddress ca = sheet.getMergedRegion(i);int firstColumn = ca.getFirstColumn();int lastColumn = ca.getLastColumn();int firstRow = ca.getFirstRow();int lastRow = ca.getLastRow();if (row >= firstRow && row <= lastRow) {if (column >= firstColumn && column <= lastColumn) {matrix[0] = firstRow;matrix[1] = firstColumn;matrix[2] = lastRow;matrix[3] = lastColumn;break;}}}return matrix;}/*** 计算合并单元格合并的跨⾏跨列数** @param sheet ⼯作表* @param row ⾏* @param column 列* @return int[]*/public static int[] getMergedSpan(Sheet sheet, int row, int column) {int sheetMergeCount = sheet.getNumMergedRegions();int[] span = {1, 1};for (int i = 0; i < sheetMergeCount; i++) {CellRangeAddress range = sheet.getMergedRegion(i);int firstColumn = range.getFirstColumn();int lastColumn = range.getLastColumn();int firstRow = range.getFirstRow();int lastRow = range.getLastRow();if (firstColumn == column && firstRow == row) {span[0] = lastRow - firstRow + 1;span[1] = lastColumn - firstColumn + 1;break;}}return span;}/*** 获取excel中列数最多的⾏号** @param sheet ⼯作表* @return int*/private static int getMaxColRowNum(Sheet sheet) {int rowNum = 0;int maxCol = 0;for (int r = sheet.getFirstRowNum(); r < sheet.getPhysicalNumberOfRows(); r++) { Row row = sheet.getRow(r);if (row != null && maxCol < row.getPhysicalNumberOfCells()) {maxCol = row.getPhysicalNumberOfCells();rowNum = r;}}return rowNum;}}excel转pdf⼯具类package com.edp.gateway.open.utils;import com.itextpdf.text.BaseColor;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Element;import com.itextpdf.text.Font;import com.itextpdf.text.Image;import com.itextpdf.text.PageSize;import com.itextpdf.text.Phrase;import com.itextpdf.text.Rectangle;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfPCell;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;import ermodel.BorderStyle;import ermodel.Cell;import ermodel.CellStyle;import ermodel.PictureData;import ermodel.Row;import ermodel.Sheet;import ermodel.Workbook;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.Map;public class ExcelToPdfUtil {/*** ⽤excel⽣成PDF** @param workbook excel⼯作表* @param isRotate 横向或纵向显⽰* @param zoom 缩放⽐例* @return byte[]*/public static byte[] excelToPdf(Workbook workbook, boolean isRotate, float zoom)throws DocumentException, IOException {Sheet sheet = workbook.getSheetAt(0);// 获取excel中的图⽚Map<String, PictureData> pictureDataMap = ExcelUtils.getPictures(workbook, sheet);ByteArrayOutputStream os = new ByteArrayOutputStream();// 创建PDFDocument document = new Document();Rectangle pageSize;if (isRotate) {// 横向显⽰pageSize = new Rectangle(PageSize.A4.getHeight(), PageSize.A4.getWidth());} else {// 纵向显⽰pageSize = new Rectangle(PageSize.A4.getWidth(), PageSize.A4.getHeight());}document.setPageSize(pageSize);PdfWriter.getInstance(document, os);//设置页边距document.setMargins(0, 0, 15, 15);document.open();// Table获取每列所占百分⽐float[] widths = ExcelUtils.getColWidth(sheet);int colCount = widths.length;// 创建TablePdfPTable pTable = new PdfPTable(widths);// 设置Table占页⾯的百分⽐pTable.setWidthPercentage(92);// 设置基本字体BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 遍历Excel的⾏和列读取数据for (int r = sheet.getFirstRowNum(); r < sheet.getPhysicalNumberOfRows(); r++) {Row row = sheet.getRow(r);// 为空时创建默认单元格if (row == null) {PdfPCell pCell = new PdfPCell(new Phrase(""));pCell.setBorder(0);pCell.setMinimumHeight(13);pTable.addCell(pCell);} else {for (int c = row.getFirstCellNum(); (c < row.getLastCellNum() || c < colCount); c++) {if (c > row.getPhysicalNumberOfCells()) {PdfPCell pCell = new PdfPCell(new Phrase(""));pCell.setBorder(0);pTable.addCell(pCell);continue;}Cell cell = row.getCell(c);if (cell == null) {continue;}// 获取单元格的值String value = ExcelUtils.getCellValue(cell);// 获取Excel单元格的样式CellStyle cellStyle = cell.getCellStyle();// 获取Excel单元格的字体ermodel.Font excelFont = workbook.getFontAt(cellStyle.getFontIndex());// 设置PDF单元格字体Font pFont = new Font(baseFont, excelFont.getFontHeightInPoints() * zoom,excelFont.getBold() ? Font.BOLD : Font.NORMAL, BaseColor.BLACK);// 处理图⽚// 拼接图⽚的keyString pictureKey = r + "-" + c;PdfPCell pCell;if (pictureDataMap.containsKey(pictureKey)) {// 如果是图⽚则给PDF单元格设置图⽚PictureData pictureData = pictureDataMap.get(pictureKey);Image image = Image.getInstance(pictureData.getData());float percent = 0.8f;if (ExcelUtils.isMergedRegion(sheet, r, c)) {float[] size = ExcelUtils.getMergedRegionSize(sheet, r, c);image.scaleToFit(size[0] * percent, size[1] * percent);} else {image.scaleToFit(row.getHeightInPoints() * percent,sheet.getColumnWidthInPixels(cell.getColumnIndex()) * percent);}pCell = new PdfPCell(image, true);} else {pCell = new PdfPCell(new Phrase(value, pFont));}// 设置对齐⽅式pCell.setHorizontalAlignment(getHorAlignment(cellStyle.getAlignment().getCode()));pCell.setVerticalAlignment(getVerAlignment(cellStyle.getVerticalAlignment().getCode()));// 设置最⼩⾼度pCell.setMinimumHeight(row.getHeightInPoints() * zoom);// 判断是否合并单元格if (ExcelUtils.isMergedRegion(sheet, r, c)) {int[] span = ExcelUtils.getMergedSpan(sheet, r, c);// 忽略合并过的单元格if (span[0] == 1 && span[1] == 1) {continue;}pCell.setRowspan(span[0]);pCell.setColspan(span[1]);// 跳过合并过的单元格c = c + span[1] - 1;}// 设置边框setBorder(pCell, sheet, r, c);pTable.addCell(pCell);}}}document.add(pTable);document.close();byte[] pdfByte = os.toByteArray();os.close();return pdfByte;}/*** 设置PDF边框** @param pCell pdf单元格* @param sheet ⼯作表* @param row ⾏* @param column 列*/private static void setBorder(PdfPCell pCell, Sheet sheet, int row, int column) {Cell cell;boolean isMergedRegion = ExcelUtils.isMergedRegion(sheet, row, column);if (isMergedRegion) {cell = ExcelUtils.getMergedRegion(sheet, row, column);} else {cell = sheet.getRow(row).getCell(column);}assert cell != null;CellStyle cellStyle = cell.getCellStyle();if (BorderStyle.NONE.equals(cellStyle.getBorderTop())) {// 隐藏上边框pCell.disableBorderSide(1);}if (BorderStyle.NONE.equals(cellStyle.getBorderBottom())) {// 隐藏下边框pCell.disableBorderSide(2);。
Excel中2007版本保存为PDF文档的操作方法
Excel中2007版本保存为PDF文档的操作方法
很多网友喜欢将自己制作的文档保存为PDF再进行分享与发布,这样不仅保护了文章的版本,而且显得比较正式。
那么,一个已经制作完成的word文档该怎么保存为PDF文档呢?今天小编就教大家在Excel中2007版本保存为PDF文档的操作方法。
Excel中2007版本保存为PDF文档的操作步骤如下:
要求:office2007以上版本。
安装office2007兼容包是不行的,不满足要求的就只有使用PDF打印机这种办法了。
最后的效果如下图所示。
进入帮助文档;
在office2007word窗口中安装F1,会弹出帮助页面,输入PDF 联线office 服务器后会返回如下几个,点击如下图中去下载。
然后再按如下操作一步步下载插件。
注意你要选择的语言,在下面的第三个图中选择语言。
下载下来后直接双击安装
选择我同意,下一步等待几秒就可以安装成功。
安装成功后重启word。
word 转PDF测试
点击左上角的office标志弹出菜单后选择内存为,再选择PDF,如下图所示,接着会让你选择保存的路径和文件文字,这样就可以成功把word保存PDF了。
office2007保存为PDF文档的注意事项:
office2007以上版本。
如何将wps表格转换为pdf格式文件
如何将wps表格转换为pdf格式文件
当我们编辑完成wps表格后,为了方便传输,我们可以将其转换为pdf格式的文件。
下面就让店铺告诉你如何将wps表格转换为pdf 格式文件的方法。
将wps表格转换为pdf格式文件的方法:
一、在电脑桌面的wps表格程序图标上双击鼠标左键,将其打开运行。
打开不需要编辑的文档。
如图所示;
二、在打开的wps表格窗口中,点击左上角的“wps表格”命令选项。
如图所示;
三、在弹出的“wps表格”命令选项对话框中,依次点击“另存为”--“输出为PDF格式”命令选项。
如图所示;
四、点击“输出为PDF格式”命令选项后,这个时候会弹出“输出PDF文件”对话框。
如图所示;
五、在“输出PDF文件”对话框中,选择需要保存文件的目录,而后再点击“确定”按钮。
如图所示;
六、文件输出完成后,根据自己的需要点击“打开文件”或者是“关闭”按钮选项。
如图所示;。
java jodconverter excel转pdf参数
Java JODConverter是一个开源的Java库,可以将各种类型的文档转换为PDF格式。
在将Excel 文件转换为PDF时,可以设置一些参数来自定义转换过程。
以下是一些常见的参数:转换模式:JODConverter支持多种转换模式,包括直接转换和模板转换。
直接转换是将原始Excel文件直接转换为PDF,而模板转换则是使用预定义的模板来生成PDF。
页面设置:可以指定PDF文件的页面大小、方向和边距等设置。
字体和样式:可以指定要使用的字体和样式,以及是否要在PDF中保留原始Excel中的格式。
水印和背景:可以添加水印和背景图像到PDF文件中。
安全性:可以设置PDF文件的安全性选项,例如是否允许打印、复制和修改等操作。
输出路径:指定转换后的PDF文件的输出路径。
以下是一个示例代码片段,演示如何使用JODConverter将Excel文件转换为PDF,并设置一些参数:javaimport java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import ermodel.Workbook;import ermodel.XSSFWorkbook;import org.jodconverter.core.document.DocumentStyle;import org.jodconverter.core.document.DocumentStyleSheet;import org.jodconverter.core.document.DocumentTemplate;import org.jodconverter.core.document.DefaultDocumentStyleSheet;import org.jodconverter.core.document.DefaultDocumentTemplate;import org.jodconverter.core.office.OfficeService;import org.jodconverter.core.office.SimpleOfficeService;public class ExcelToPDFConverter {public static void main(String[] args) throws IOException {// Load Excel fileFileInputStream inputStream = new FileInputStream(new File("input.xlsx"));Workbook workbook = new XSSFWorkbook(inputStream);// Create PDF output fileFileOutputStream outputStream = new FileOutputStream(new File("output.pdf"));// Create office service and document style sheetOfficeService officeService = SimpleOfficeService.getInstance();DocumentStyleSheet styleSheet = new DefaultDocumentStyleSheet();// Create document template with custom style and template contentDocumentTemplate template = new DefaultDocumentTemplate(styleSheet);template.addContent("Hello World!"); // Add content to the template// Convert Excel to PDF with custom parametersofficeService.convert(workbook, outputStream, template, null, null); // Set custom parameters here// Close streams and exitoutputStream.close();inputStream.close();}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
手机Excel怎么转PDF,Excel转PDF的方法有哪些在日常的办公中经常会制作各种表格如:成绩单、考勤、工资单等,Excel制作是很方便,但是Excel格式的表格和容易被修改,所以很多人想要将其转换为PDF格式,那具体该怎样做呢?今天小编就交大家一个简单的手机转换方法。
转换前的准备工作:先把需要转换的文件报存在手机里,然后在浏览器或者应用市场里找到今天所需要的转换工具。
手机Excel转换PDF格式的操作流程:
1.打开软件后首先在最下面一排的功能选区选择转为PDF,然后在点击中间的Excel转PDF。
2.在添加文件的页面找到需要转换的文件,如果文件过多的话可以在搜索框里输入文件的关键词进行查看。
3.在确定转换的页面查看一下转换的文件是否理想。
4.等待一会完成转换后会出现一个新的页面在此选择查看文档就可以查看转换后的文件了。
5.这时选择查看文档就可以对转换后的文件进行阅读了。
手机上的Excel转换为PDF的方法到这就结束了,希望能对大家有所帮助。