5

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

IE

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

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

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

在 Excel 中很容易,只是不确定如何将其构建到由 cfml 生成的 Excel 文件中。 在此处输入图像描述

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

我在谷歌上找不到任何东西,搜索 cfdocs.org 也没有找到任何东西。

4

1 回答 1

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)>

取自组合

(但请注意,后者中给出的示例并没有真正起作用)

于 2016-01-26T17:48:03.530 回答