Java使用Spire.xls将Excel转为PDF文档

您所在的位置:网站首页 xlsx转成pdf之前怎么调整文件 Java使用Spire.xls将Excel转为PDF文档

Java使用Spire.xls将Excel转为PDF文档

2024-07-16 18:51:53| 来源: 网络整理| 查看: 265

#前言 需求是将一个excel表格数据源转为其他样式的文档,我是直接sprie.xls将其转为pdf进行展示 首先,我在创建的springboot项目中的pom文件中导入相关依赖

e-iceblue spire.xls.free 5.1.0

再application.properties配置文件中引入数据源的路径

excel_path =C:/Users/xxx.xlsx pdf_path =C:/Users/xxx.pdf

后端代码:

public class SpireXLSController { //从properties中获取路径值 @Value("${excel_path}") private String excelPath;//读取excel,excel路径 @Value("${pdf_path}") private String pdfPath;//写入pdf路径 @RequestMapping("/text") public String Test01(){ //加载excel表格 Workbook workbook = new Workbook(); workbook.loadFromFile(excelPath); //获取第一个工作表 Worksheet worksheet = workbook.getWorksheets().get(0); //删除多余字段 worksheet.deleteColumn(1,2); worksheet.deleteColumn(5,2); //将含有Y放到上方 workbook.getDataSorter().getSortColumns().add(1, SortComparsionType.Values, OrderBy.Top); workbook.getDataSorter().getSortColumns().add(2, SortComparsionType.Values, OrderBy.Ascending); //指定需要排序的列索引以及排序的方式(基于单元格的值) //获取有数据的区域 CellRange dataRange =worksheet.getAllocatedRange(); //使用条件格式将数据为Y的背景色设为绿色 ConditionalFormatWrapper format1 = dataRange.getConditionalFormats().addCondition(); format1.setFormatType(ConditionalFormatType.Formula); format1.setFirstFormula("=IF($B1=\"Y\",true,false)"); format1.setBackColor(Color.green); //使用条件格式将数据为N有编号的背景色设为黄色 ConditionalFormatWrapper format2 = dataRange.getConditionalFormats().addCondition(); format2.setFormatType(ConditionalFormatType.Formula); format2.setFirstFormula("=AND(IF($A1=\"\",false,true),IF($B1=\"N\",true,false))"); format2.setBackColor(Color.yellow); //使用条件格式将数据为N无编号的背景色设为红色 ConditionalFormatWrapper format3 = dataRange.getConditionalFormats().addCondition(); format3.setFormatType(ConditionalFormatType.Formula); format3.setFirstFormula("=AND(IF($A1=\"\",true,false),IF($B1=\"N\",true,false))"); format3.setBackColor(Color.pink); //排序是否包含标题(默认第一个数据为标题,不会对它进行排序) workbook.getDataSorter().isIncludeTitle(true); //指定要排序的单元格范围并进行排序 workbook.getDataSorter().sort(worksheet.getRange()); //设置转换后的PDGF页面高宽适应工作表的内容大小 workbook.getConverterSetting().setSheetFitToPage(true); //设置转换后PDF的页面宽度适应工作表的内容宽度 workbook.getConverterSetting().setSheetFitToWidth(true); //复制workbook //遍历所有行 int count = 0; int lastRow = worksheet.getLastRow(); for (int i =1;i count++; CellRange cellRange = worksheet.getCellRange(i, 1, i, worksheet.getLastColumn()); CellRange range = worksheet.getCellRange(worksheet.getLastRow() + 1, 1, worksheet.getLastRow() + 1, worksheet.getLastColumn()); worksheet.copy(cellRange,range,true); } } for (int i = worksheet.getLastRow()-count; i > 0; i--) { if(worksheet.getCellRange(i,1).isBlank()){ //删除指定行 worksheet.deleteRow(i); } } //将生成的文档保存到指定路径 workbook.saveToFile(pdfPath, FileFormat.PDF); return "index.html"; } }

总结 1:以上就是全部代码了,代码逻辑的话就比较繁琐,spire.xls直接从excel读取到背景颜色时可以按照背景颜色排序,但如果自己设置完format.setBackColor不可以直接调用方法排序,所以我先按某个条件字段进行排序固定位置,然后再设置背景色(先设背景颜色后就无法移动,所以只能先排序,再设置) 2:按照某个字段值设置颜色(如果是数字类型的话可以直接比较,如果是字符串,而且这涉及到两个字段才能决定所以用的公式)最终效果是上面绿色,下面是红色和黄色夹杂到一起,难以分离,最初想通过两个excel或者两个sheet删除异步分数据copy在一块,但因为限制实现不了,最终按照正序进行分别按条件隔条复制删除(@1先赋值变量,再删除后将变量值copy到最后是获取不到数据的所以只能先copy再delete指定行,@2正序删除,逆序会导致原有顺序杂乱)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭