我正在使用cfscript spreadsheetNew方法动态构建电子表格。
即
<cfscript>
downloadDoc = spreadsheetNew("spreadSheetName");
spreadsheetAddRow(downloadDoc,"spreadsheetCols");
....
</cfscript>
我构建的一列包含一个公式,用于显示用户键入空白列的值与当前值(位于不同列中)之间的百分比差异。
我建立此用户请求我添加条件格式以根据值更改公式单元格的颜色(即如果更改大于20%或小于-20%,则单元格应该是红色的)。由于影响公式的其中一个值是由用户键入的,因此颜色更改需要在Excel中进行,而不是在我的函数中。
在Excel中很容易,只是不确定如何将其构建为cfml生成的Excel文件。
我的问题是,有没有人知道这是否可以使用cfml(通过cfscript或cfspreadsheet标签)以及如何做到这一点?
我无法找到任何谷歌搜索,搜索cfdocs.org并没有改变任何事情。
答案 0 :(得分:5)
<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)>
取自
的组合(但请注意,后者给出的例子并不真正有效)