使用ColdFusion条件格式化Excel文件

时间:2016-01-26 16:31:20

标签: excel coldfusion apache-poi coldfusion-11 cfspreadsheet

我正在使用cfscript spreadsheetNew方法动态构建电子表格。

<cfscript>
  downloadDoc = spreadsheetNew("spreadSheetName");
  spreadsheetAddRow(downloadDoc,"spreadsheetCols");
  ....
</cfscript>

我构建的一列包含一个公式,用于显示用户键入空白列的值与当前值(位于不同列中)之间的百分比差异。

我建立此用户请求我添加条件格式以根据值更改公式单元格的颜色(即如果更改大于20%或小于-20%,则单元格应该是红色的)。由于影响公式的其中一个值是由用户键入的,因此颜色更改需要在Excel中进行,而不是在我的函数中。

在Excel中很容易,只是不确定如何将其构建为cfml生成的Excel文件。 enter image description here

我的问题是,有没有人知道这是否可以使用cfml(通过cfscript或cfspreadsheet标签)以及如何做到这一点?

我无法找到任何谷歌搜索,搜索cfdocs.org并没有改变任何事情。

1 个答案:

答案 0 :(得分:5)

好消息!它可以完成(虽然不是在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)>

取自

的组合

(但请注意,后者给出的例子并不真正有效)