使用ColdFusion条件格式化Excel文件

我正在使用cfscript spreadsheetNew方法dynamic构build电子表格。

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

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

我build立这个的用户请求,我添加条件格式来改变公式单元格的颜色的基础上的价值(即如果变化大于20%或小于-20%的单元格应该是红色)。 由于影响公式的值之一是由用户键入的,颜色变化将需要在Excel中发生,而不是在我的函数中。

在Excel中很容易,只是不知道如何将其构build到由cfml生成的Excel文件中。 在这里输入图像说明

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

我没有find任何东西用谷歌search,而searchcfdocs.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)> 

从一个组合

  • ConditionalFormats.java和
  • HSSFConditionalFormatting.html

(但是请注意,后者中给出的例子并不真正起作用)