NPOI - ConditionalFormattingRule
NPOI 给xls(xlsx)创建条件格式
获取 XSSFSheetConditionalFormatting 对象
初始化
IWorkbook _workbook = new XSSFWorkbook();
ISheet _dataSheet = _workbook.GetSheet("template");
ISheetConditionalFormatting fcs = _dataSheet.SheetConditionalFormatting;
调用 XSSFSheetConditionalFormatting 的 CreateConditionalFormattingRule 方法
该类总共提供了6个CreateConditionalFormattingRule重载方法,可以根据需求选择
CreateConditionalFormattingRule(String formula);
CreateConditionalFormattingRule(ComparisonOperator comparisonOperation, String formula);
CreateConditionalFormattingRule(ComparisonOperator comparisonOperation, String formula1, String formula2);
CreateConditionalFormattingRule(IconSet iconSet);
CreateConditionalFormattingRule(XSSFColor color);
CreateConditionalFormattingRule(ExtendedColor color);
示例代码
CellRangeAddress range = CellRangeAddress.ValueOf("A1:A100");
//创建名称管理器(可以通过execl INDIRECT函数获取其引用位置的值集合)
IName sexName = _workbook.CreateName();
sexName.NameName = "Sex";
sexName.RefersToFormula = $"Value!$A$1:$A$2";
// 该rule表示A列只允许填写 Sex 指定的值。注意 A1 没有加 $,所以如果是第二列,则代表的是 A2,可参考第5点cell引用
IConditionalFormattingRule rule = fcs.CreateConditionalFormattingRule($"=AND(ISNA(MATCH(A1,INDIRECT(\"Sex\"),0)),TRIM(A1)<>\"\")");
XSSFPatternFormatting fillColor = (XSSFPatternFormatting)rule.CreatePatternFormatting();
fillColor.FillBackgroundColor = IndexedColors.Violet.Index;
//自定义颜色
fillColor.FillBackgroundColorColor = new XSSFColor(new byte[] { 112, 48, 160 });
fillColor.FillPattern = FillPattern.SolidForeground;
fcs.AddConditionalFormatting(new CellRangeAddress[] { range }, rule);
ComparisonOperator 参数
ComparisonOperator 总共提供了 Between,NotBetween,Equal,NotEqual,GreaterThan,LessThan,GreaterThanOrEqual,LessThanOrEqual 几种比较操作,适用于将当前cell的值和固定值做比较
formula 参数
如果和 comparisonOperation 参数共同使用,则返回该公式计算后的值,和cell值做比较;
如果只有 formula 参数,则以 formula 计算后的值为 true/false 应用格式
将格式应用于整列
NPOI 随着格式的数量增加,渲染格式的耗时会大幅的提高(如果20个格式需要1分钟,那么200个格式可能需要半个小时),所以应尽量批量应用公式。
而批量应用公式的时候,需要理解清楚xlsx的cell引用(https://www.zhihu.com/question/372122014),比如$A1和A1,加了1和A1,加了1和A1,加了符合的表示固定引用,不加表示相对引用,相对引用则会随单元格的区域变动而变动
某列重复值规则
var formula = "COUNTIF($D$2:$D$101,D2)>1"
全部代码如下
IWorkbook _workbook = new XSSFWorkbook();
ISheet _dataSheet = _workbook.GetSheet("template");
ISheetConditionalFormatting fcs = _dataSheet.SheetConditionalFormatting;
CellRangeAddress range = CellRangeAddress.ValueOf("A1:A100");
//创建名称管理器(可以通过execl INDIRECT函数获取其引用位置的值集合)
IName sexName = _workbook.CreateName();
sexName.NameName = "Sex";
sexName.RefersToFormula = $"Value!$A$1:$A$2";// 该rule表示A列只允许填写 Sex 指定的值。注意 A1 没有加 $,所以如果是第二列,则代表的是 A2,可参考第5点cell引用
IConditionalFormattingRule rule = fcs.CreateConditionalFormattingRule($"=AND(ISNA(MATCH(A1,INDIRECT(\"Sex\"),0)),TRIM(A1)<>\"\")");
XSSFPatternFormatting fillColor = (XSSFPatternFormatting)rule.CreatePatternFormatting();
fillColor.FillBackgroundColor = IndexedColors.Violet.Index;
//自定义颜色
fillColor.FillBackgroundColorColor = new XSSFColor(new byte[] { 112, 48, 160 });
fillColor.FillPattern = FillPattern.SolidForeground;
fcs.AddConditionalFormatting(new CellRangeAddress[] { range }, rule);
https://www.cnblogs.com/daxiongblog/p/11388729.html
https://juejin.cn/post/7130090277821218852
相关文章:
NPOI - ConditionalFormattingRule
NPOI 给xls(xlsx)创建条件格式 获取 XSSFSheetConditionalFormatting 对象 初始化 IWorkbook _workbook new XSSFWorkbook(); ISheet _dataSheet _workbook.GetSheet("template"); ISheetConditionalFormatting fcs _dataSheet.SheetConditionalFormatting;调用…...
JavaのString类这一篇就够了(包含StringBuffer_Builder)
1.🥗String类简介 在我们写代码的时候,String总是充斥着前前后后。 但你会不会经常力不从心, “这个*** 字符串怎么** 转换不成功啊” “*** 这个字符串到底是常量还是对象啊” “这*** 字符串内存结构到底* * * 是什么啊” “为啥我的字符串…...
C# dataGridView 导出表格 xls NPOI 2.4.1 版本
using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; try { SaveFileDialog fileDialog new SaveFileDialog(); fileDialog.Filter “Excel(97-2003)|*.xls”; if (fileDialog.ShowDialog() System.Windows.Forms.DialogResult.Cancel) { return; } //不允许dataGridView…...
秒杀项目的消息推送
目录 一、创建消费者 二、创建订单链路配置 1.定义RabbitMQ配置类 2.创建RabbitmqOrderConfig配置类 三、如何实现RabbitMQ重复投递机制 1.开启发送者消息确认模式 2.消息发送确认 ① 创建ConfirmCallBacker确认模式 ② 创建ReturnCallBack退回模式 3.创建生产者 …...
最近开发及 vue3 几个小总结
只是单纯记录一下最近维护了几个项目之后的感触,也只是在自己现在水平上面的一些感觉。发发牢骚,水水文章 是否过度封装 可能水平不够吧,在 axios 封装的时候,只是把响应和拦截还有一些全局的配置封装了一下,并没有加…...
代谢组学分享-花青素通过调节氨基酸代谢改善糖尿病肾病的肾功能
代谢组学文献分享,文章标题:Anthocyanin improves kidney function in diabetic kidney disease by regulating amino acid metabolism 发表期刊:Journal of Translational Medicine 影响因子:8.44 作者单位:中山大…...
超简单!pytorch入门教程:Tensor
超简单!pytorch入门教程:Tensor 一、pytorch安装 安装pytorch之前,需要安装好python(废话),还没安装过python的宝宝请先移步到廖雪峰的python教程,待安装熟悉完之后,再过来这边。 …...
如何使用COCO数据集,注意事项
COCO数据集可用来训练目标检测,分类,实例分割等。 下面简单说下如何使用这个数据集, 数据集下载可用如下的代码进行,以2017为例。 # Download the image data. cd ./images echo "Downloading MSCOCO train images ...&quo…...
金三银四跳槽季,JAVA面试撸题就来【笑小枫】微信小程序吧~
JAVA面试撸题就来【笑小枫】微信小程序啦~ 疫情已过,金三银四即将到来,小伙伴们是否有跳槽的打算呢?不管有没有,技术不能丢,让我们一起来撸题吧。 博主最近整理了一批面试题,包括JAVA基础、多线程与锁、Red…...
分享115个HTML电子商务模板,总有一款适合您
分享115个HTML电子商务模板,总有一款适合您 115个HTML电子商务模板下载链接:https://pan.baidu.com/s/158y3jP0tv7ZikxNOBMKsSg?pwdt970 提取码:t970 Python采集代码下载链接:采集代码.zip - 蓝奏云 import os import shuti…...
Python 字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号 ( 或 " ) 来创建字符串。创建字符串很简单,只要为变量分配一个值即可。例如:var1 Hello World!var2 "Python Runoob"Python 访问字符串中的值Python 不支持单字符类型ÿ…...
总线定义,车载总线:车载etherNet or CAN
总线的定义总线是连接多个设备或者接入点的数据传输通路。这里面的关键词是多个设备或者接入点,所以不要过于局限的看待总线。根据互联的设备/接入点不同,传输的数据带宽,速率,距离不同和应用场景的不同都可能有不同的总线。不同的…...
Python(for和while)循环嵌套及用法
Python 不仅支持 if 语句相互嵌套,while 和 for 循环结构也支持嵌套。 所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,甚至 while 中有 for 或者…...
6万字电力行业系统解决方案光伏电站综合安防系统解决方案
【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除!完整资料领取见文末,部分资料内容: 目录 第 一 章背景与需求 1.1行…...
[Android Studio]Android 数据存储--SQLite数据库存储
🟧🟨🟩🟦🟪 Android Debug🟧🟨🟩🟦🟪 Topic 发布安卓学习过程中遇到问题解决过程,希望我的解决方案可以对小伙伴们有帮助。 📋笔记目…...
学校节能降耗减排方案——能耗监管平台的建设及效果剖析
摘要:作为崭新的校园能耗管理手段,能耗监测平台以传统管理方式无法企及的优势有力地提升了高校能源管理工作的水平.从而受到了相关管理者的青睐。本文梳理总结了高校能耗监测平台的基本组成和优势特点,同时对能耗平台建设和使用中…...
探索IP地址的应用
无论是互联网行业还是传统行业都会用到网络,作为企业如何维护网络安全,保障网站不被攻击,数据不被泄露等。这个时候我们就会通查询IP归属地,辅助企业解决安全问题。下面介绍一下ip归属地在各行业的具体应用。1.网安行业应用一&…...
点赞破万!阿里面试官总结的2022最新1685页Java面试宝典太全了
程序员入职企业的难度也在持续加大,如何顺利通过面试成为了大家所关心的话题。针对这些人群的需求,小编从阿里找来一份让大家在求职过程中旗开得胜!是从什么时候开始准备的?大概的我已经记不清了,可能是 4 月份左右开始…...
项目搭建规范
一. 代码规范 1.1. 集成editorconfig配置 EditorConfig 有助于为不同 IDE 编辑器上处理同一项目的多个开发人员维护一致的编码风格。 # http://editorconfig.org root true [*] # 表示所有文件适用 charset utf-8 # 设置文件字符集为 utf-8 indent_style space # 缩进…...
8.Docker Machine
Docker Machine Docker Machine是Docker官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。 Docker Machine项目基于Go语言实现,目前在Github上进行维护。 Docker Machine是 Docker 官方提供的一个工具&…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
java+webstock
maven依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.3.5</version></dependency><dependency><groupId>org.apache.tomcat.websocket</groupId&…...
基于Java项目的Karate API测试
Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...
