JAVA使用POI对Excel中的条件格式处理
问题描述
当前场景是,从模版读取excel的信息和格式,新建一个excel,并设置格式和数据,但是在设置条件样式(条件格式)没有设置成功,这里记录一下解决办法。
从百度也看了好多文章,都试了也不行。接下来,说一下解决思路
解决思路
POI中excel的条件格式是 “XSSFSheetConditionalFormatting” 这样的一个类,条件样式中有“条件”和“格式” 是两个不同的处理地方,也就是意味着,我获取了模版中的“条件”设置到新的excel之后,还需要获取模版中的“格式”设置到新的excel里。
1、获取模版和新的excel中sheet页的“条件样式”对象(因为条件样式是针对sheet页来的)
XSSFSheetConditionalFormatting oldFormatting = oldSheet.getSheetConditionalFormatting(); //获取模版的sheet中的条件样式对象
XSSFSheetConditionalFormatting newFormatting = newSheet.getSheetConditionalFormatting(); //获取新的excel的sheet中的条件样式对象
2、获取模版中有多少“条件样式”
int numConditionalFormattings = oldFormatting.getNumConditionalFormattings(); //获取模版的sheet中有多少条件样式
3、对模版中的条件样式进行循环,并获取模版中的每一条“条件样式”
XSSFConditionalFormatting conditionalFormattingAt = oldFormatting.getConditionalFormattingAt(i); //获取模版的sheet中的每一个条件样式
4、获取模版中“条件样式”对应的单元格数组
CellRangeAddress[] formattingRanges = conditionalFormattingAt.getFormattingRanges(); //获取模版的sheet中的"条件样式"对应的单元格
5、获取模版中“条件”的下标(我这里只取了一个,如果是多个就循环取)
int numberOfRules = conditionalFormattingAt.getNumberOfRules(); //获取模版的sheet中"条件"的下标
7、获取模版中的“条件”对象,并设置到新的sheet里
XSSFConditionalFormattingRule rule = conditionalFormattingAt.getRule(numberOfRules-1); //通过下标获取模版的sheet中的"条件"
newFormatting.addConditionalFormatting(formattingRanges,rule); //设置新的sheet中的"条件样式"中的"条件"
8、在新的sheet里创建“样式”对象
XSSFConditionalFormattingRule conditionalFormattingColorScaleRule = newFormatting.createConditionalFormattingColorScaleRule(); //创建新的sheet中的"条件样式"中的"样式"
XSSFPatternFormatting patternFormatting = conditionalFormattingColorScaleRule.createPatternFormatting(); //获取"样式"对象
9、将模版的“样式”设置到新的sheet里
patternFormatting.setFillBackgroundColor(rule.getPatternFormatting().getFillBackgroundColorColor()); //设置新sheet中"条件样式"的背景
测试解析
如果只设置到了第7步,就是下面的结果
如果设置到了第9步,就是下面的结果
不扯没用的,直接上代码
/*** 将模版sheet中的条件样式设置到新的sheet中* @param newSheet* @param oldSheet*/public static void setConditionStyle(XSSFSheet newSheet,XSSFSheet oldSheet){XSSFSheetConditionalFormatting oldFormatting = oldSheet.getSheetConditionalFormatting(); //获取模版的sheet中的条件样式对象XSSFSheetConditionalFormatting newFormatting = newSheet.getSheetConditionalFormatting(); //获取新的excel的sheet中的条件样式对象int numConditionalFormattings = oldFormatting.getNumConditionalFormattings(); //获取模版的sheet中有多少条件样式for (int i = 0; i < numConditionalFormattings; i++) {XSSFConditionalFormatting conditionalFormattingAt = oldFormatting.getConditionalFormattingAt(i); //获取模版的sheet中的每一个条件样式CellRangeAddress[] formattingRanges = conditionalFormattingAt.getFormattingRanges(); //获取模版的sheet中的"条件样式"对应的单元格int numberOfRules = conditionalFormattingAt.getNumberOfRules(); //获取模版的sheet中"条件"的下标XSSFConditionalFormattingRule rule = conditionalFormattingAt.getRule(numberOfRules-1); //通过下标获取模版的sheet中的"条件"newFormatting.addConditionalFormatting(formattingRanges,rule); //设置新的sheet中的"条件样式"中的"条件"XSSFConditionalFormattingRule conditionalFormattingColorScaleRule = newFormatting.createConditionalFormattingColorScaleRule(); //创建新的sheet中的"条件样式"中的"样式"XSSFPatternFormatting patternFormatting = conditionalFormattingColorScaleRule.createPatternFormatting(); //获取"样式"对象patternFormatting.setFillBackgroundColor(rule.getPatternFormatting().getFillBackgroundColorColor()); //设置新sheet中"条件样式"的背景}}
如果有什么疑问,或者指教 欢迎加QQ:1318623133
----------------------------------------- I`am Joshua,may god bless you
JAVA使用POI对Excel中的条件格式处理相关推荐
- java通过poi读取excel中的日期类型数据或自定义类型日期
java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候,读出来的是这样的 12-十月-2019,而Excel中输入的是 2019/10/12 ...
- 在Excel中使用条件格式——让excel根据列值调整行颜色
目前,在做excel表格的时候,有一列是"是.否"的选择,希望此列选择了"是"的行显示不一样的颜色.查了很就,实验了一下原来用excel中的"条件格式 ...
- java excel 操作 jar包_[JAVA]使用POI向Excel中写入数据以及如何在Intellj IDEA中打jar包...
freddon 发表于2018-05-30 阅读 1383 | 评论 0 给GF写的,现在记录下POI操作Excel读写过程;以及如何在Intellj IDEA中打jar包 代码如下: ``` imp ...
- java通过poi读取excel中的日期类型
1.问题分析 Java 读取Excel表格日期类型数据的时候,读出来的是这样的 12-十月-2020,而Excel中输入的是 2020/10/12 或 2020-10-12 poi处理excel时,当 ...
- Excel中,条件格式的跟多应用-「数字条」「图标集」
■前言 之前只知道 条件格式中最下面的三个. 近期发现,原来还有别的功能. 太棒了!!! ■效果 ---
- poi导入excel日期处理_POI处理Excel中各种日期格式问题
前不久写过一篇随笔<EXCEL解析之终极方法WorkbookFactory>,提到使用WorkbookFactory来处理Excel文件数据,最近发现一个问题就是这个办法不能很好的处理各种 ...
- Java 利用POI处理Excel的时间格式
问题: 用Java的POI处理Excel中的时间单元格,往往得到的格式不是我们想要的.比如: 按上图中方式设置好后,通过以下代码 XSSFRow row = sheet.getRow(0);Cell ...
- java使用poi将excel转csv文件(所有sheet页、值)
java使用poi将excel中每一个sheet页中数据转为csv文件 其中空单元格值为null,并去掉了转csv时数字等默认加上的小数点 使用jar包版本: poi-3.8 xmlbeans-3.1 ...
- 对比Excel学openpyxl系列之设置excel数字和条件格式
目录 数字格式 条件格式 单元格规则 数据条 色阶 图标集 数字格式 要 对 数 字 的 显 示 格 式 进 行 调 整 , 需 要 用 到number_format属性,具体形式如下: from o ...
最新文章
- 如何攻破容器持久化存储挑战?
- 复旦高等代数 II(17级)每周一题
- 命名时取代基优先顺序_【选修五】高中化学重难点知识:有机物的命名方法
- python中json方法_在python中使用JSON库(通用方法),json,的,常用
- config.cfg.php,PHP:使用给定的结构获取变量形式的config.cfg
- windwo下载完nvm无法执行node
- 怎么关闭eureka的服务_SpringCloud之Eureka
- 华为员工能拿多少钱,揭秘一个真实的华为
- (ZT)中国姓氏韦氏拼音拼法
- 谈谈Scala的抽取器(Extractor)
- 【收藏】通信知识分类整理
- Latex之页边距设置
- Adobe相关(Windows平台)
- Linux入门---基本指令(下)
- Word代做,线上兼职,月入过万
- multiboot之ICAP
- 使用VMware创建虚拟机,并配置虚拟机网络
- node,core,CPU和GPU的关系
- 趣谈网络协议-课程介绍
- 虚拟盘rpc服务器不可用,rpc服务器不可用,手把手教你rpc服务器不可用怎么办
热门文章
- 数学建模python代码_主题模型 LDA 入门(附 Python 代码)
- OpenCV探索之路(二十七):皮肤检测技术
- introjs,intro.js-react 步骤指引
- USACO:1.3.6 Ski Course Design(滑雪场设计)
- 独一无二的出现次数-哈希表1207-python
- python设计麻将_麻将胡牌算法,python版本
- matlab怎样计算兰彻斯特方程,一步一步建立战斗模型
- Flutter入门:开发环境与开发工具的准备
- 魅族pro 7详细打开Usb调试模式的方法
- [IOS APP]简爱跑步12周