ruby - CAxlsx中包含字符串的单元格的ConditionalFormatting
问题描述
使用 CAxlsx gem ( https://github.com/caxlsx/caxlsx ),我正在尝试向一系列单元格添加条件格式,如果单元格包含字符,则应在其中应用样式-
。这是我目前正在使用的片段。
worksheet.add_conditional_formatting(range,
type: :containsText,
formula: "-",
dxfId: @styles[:invalid],
priority: 1)
不幸的是,这似乎不起作用。当单元格不包含文本而是负数时,它似乎确实应用了样式,但这不是我的用例。文档也严重缺乏,并且没有提供很多关于在这种情况下应该做什么的解释。(例如,有一种cellIs
类型,containsText
可以使用运算符,但也有一种containsText
类型,没有解释它们之间的区别 -在我的情况下似乎都不起作用。)任何指针都将不胜感激,所以到目前为止,这只是反复试验。
解决方案
假设您的范围类似于"A1:A4"
您正在寻找的公式是NOT(ISERROR(SEARCH("-",A1)))
。文档
例子:
require 'axlsx'
package = Axlsx::Package.new
workbook = package.workbook
s = workbook.styles.add_style({b:true, type: :dxf})
rows = ['a','b-c','d','e-f']
workbook.add_worksheet do |sheet|
rows.each do |row|
sheet.add_row [row]
end
sheet.add_conditional_formatting("A1:A4", { :type => :containsText,
:operator => :containsText,
:formula => 'NOT(ISERROR(SEARCH("-",A1)))',
:dxfId => s,
:priority => 1 })
end
package.serialize('conditional_test.xlsx')
我发现确定适当公式的最简单方法是:
- 手动新建excel工作簿
- 填写适当数量的单元格
- 在excel中有条件地格式化它们
- 保存此工作簿并关闭
- 将扩展名更改为 .zip(因为 xlsx 只是压缩的 XML 文件)
- 打开 zip 文件并导航到 /xl/worksheets/sheet1.xml
- 打开此文件,它将显示用于条件格式的公式,例如
<x14:conditionalFormattings>
<x14:conditionalFormatting xmlns:xm="http://schemas.microsoft.com/office/excel/2006/main">
<x14:cfRule type="containsText" priority="1" operator="containsText" id="{E75522C8-BC6E-4142-B282-D21DF586C852}">
<xm:f>NOT(ISERROR(SEARCH("-",A1)))</xm:f>
<xm:f>"-"</xm:f>
<x14:dxf>
<font>
<color rgb="FF9C0006"/>
</font>
<fill>
<patternFill>
<bgColor rgb="FFFFC7CE"/>
</patternFill>
</fill>
</x14:dxf>
</x14:cfRule>
<xm:sqref>A1:A4</xm:sqref>
</x14:conditionalFormatting>
</x14:conditionalFormattings>
推荐阅读
- html - 如何仅在必要时使用CSS拉伸内容以填充容器,同时均匀包装文本?
- java - java 8 - 在拆分逗号分隔字符串后分组
- c# - C# 将 foreach 循环格式化为 Lambda
- arrays - 在堆上分配一个大小不定的多维数组,同时保持数组索引语法
- yocto - Yocto:向图像添加“树”,输出二进制文件在哪里?
- powerbi - PowerBI 可以导入换行分隔的 JSON 吗?
- excel - Excel - MATCH 函数 - 多个搜索结果
- ios - 在 SwiftUI 中的 TouchEvent 上绘制圆圈
- .net-core - .NET Core Blazor WebAssembly 中的本机错误
- html - 运行服务器(Django)时未加载CSS最后条目?