【问题标题】:Conditional Formatting Excel File Using ColdFusion使用 ColdFusion 条件格式化 Excel 文件
【发布时间】:2016-01-26 16:31:19
【问题描述】:

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

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

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

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

在 Excel 中很容易,只是不知道如何将其构建到由 cfml 生成的 Excel 文件中。

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

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

【问题讨论】:

  • 有可能。我建议采取婴儿步骤。首先,如果您还不知道如何格式化电子表格单元格,请学会这样做。一旦掌握了窍门,条件逻辑就会变得更简单。
  • 对于一个用户,我会完全跳过 ColdFusion 并为他编写一个宏。
  • 您可能需要使用 Apache POI 来完成此操作。 CFML 仅从该库中公开非常有限的功能。
  • (编辑)是的,CF 不支持条件格式 AFAIK。您将不得不使用其他方法,例如 POI。 如果变化大于 20% 或小于 -20% 如果两者都不是,会发生什么情况,例如:10%?
  • @Leigh 要么没有颜色,要么是绿色

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


【解决方案1】:

好消息!可以做到(虽然在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)>

取自组合

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

【讨论】:

  • 该死,打败我 ;-) 。荣誉 +1
  • 谢谢蒂姆!这正是我想要的。
猜你喜欢
  • 2018-06-15
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 2020-11-16
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多