我正在使用 cfscript SpreadsheetNew 方法动态构建电子表格。
即
<cfscript>
downloadDoc = spreadsheetNew("spreadSheetName");
spreadsheetAddRow(downloadDoc,"spreadsheetCols");
....
</cfscript>
我正在构建的列之一包含一个公式,用于显示用户键入空白列的值与当前值(位于不同列中)之间的百分比差异。
我正在构建这个的用户请求我添加条件格式以根据值更改公式单元格的颜色(即,如果更改大于 20% 或小于 -20%,则单元格应为红色)。由于影响公式的值之一是由用户键入的,因此颜色更改需要在 Excel 中进行,而不是在我的函数中进行。
在 Excel 中很容易,只是不知道如何将其构建到由 cfml 生成的 Excel 文件中。
我的问题是,有谁知道是否可以使用 cfml (通过 cfscript 或 cfspreadsheet 标签)以及如何做到这一点?
我在谷歌上找不到任何东西,并且在 cfdocs.org 上搜索也没有找到任何东西。
最佳答案
好消息!这是可以做到的(虽然在 CF10 中不行;附带的 POI 版本太低)。由于您使用的是 CF11,因此这将帮助您完成大部分工作。这个特殊的演示会将任何大于 100 的东西变成红色。
<cfset var poiSheet = downloadDoc.getWorkBook().getSheet("Sheet1")>
<cfset poiSheet.setFitToPage(true)>
<cfset comparison = CreateObject("java", "org.apache.poi.ss.usermodel.ComparisonOperator")>
<cfset rule = poiSheet.getSheetConditionalFormatting().createConditionalFormattingRule( comparison.GE, "100.0", javacast("null", ""))>
<cfset patternFmt = rule.createPatternFormatting()>
<cfset color = CreateObject("java", "org.apache.poi.ss.usermodel.IndexedColors")>
<cfset patternFmt.setFillBackgroundColor(javacast("short", color.RED.index))>
<cfset cellRangeAddress = CreateObject("java", "org.apache.poi.ss.util.CellRangeAddress")>
<cfset regions = [ cellRangeAddress.valueOf("A1:A6") ]>
<cfset poiSheet.getSheetConditionalFormatting().addConditionalFormatting(regions, rule)>
取自组合
(但请注意,后者给出的示例实际上不起作用)
关于excel - 使用 ColdFusion 对 Excel 文件进行条件格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35018858/