You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ColdFusion 2021调用XSSFSheet的setRepeatingRows方法重载匹配错误

ColdFusion 2021迁移后调用POI setRepeatingRows方法报错的解决办法

问题场景

将代码从ColdFusion 2018迁移至ColdFusion 2021(Update 6)后,执行以下设置Excel重复行的POI代码时出现错误:

cellRange = createObject(
  "java",
  "org.apache.poi.ss.util.CellRangeAddress"
).init( 1, 1, 0, 0 );

document    = spreadSheetNew( "Demo", true );
poiWorkBook = document.getWorkBook();

for( i = 0; i < poiWorkBook.getNumberOfSheets(); i++ ){
  poiSheet = poiWorkBook.getSheetAt( i );

  try{
    poiSheet.setRepeatingRows( cellRange );
  }catch( any e ){
    writeDump( var=poiSheet, label="poiSheet" );
    writeDump( var=cellRange, label="cellRange" );
    writeDump( var = e, label="Sheet #i#" );
  }
}

错误提示

Either there are no methods with the specified method name and argument types or the setRepeatingRows method is overloaded with argument types that ColdFusion cannot decipher reliably

中文释义:找不到指定方法或无法可靠解析setRepeatingRows的重载方法

已尝试的无效操作

  • 更新ColdFusion 2021至最新补丁
  • 升级JDK至官方支持版本(当前使用JDK 11.0.19)
  • 修改变量名称

解决方法

通过在createObject时指定POI 4.1.2版本创建CellRangeAddress对象,问题得以解决,修正后的初始化代码如下:

cellRange = createObject(
  "java",
  "org.apache.poi.ss.util.CellRangeAddress",
  "poi",
  "4.1.2"
).init( 1, 1, 0, 0 );

原因分析

ColdFusion 2021附带的POI库版本与ColdFusion 2018不一致,直接创建的CellRangeAddress对象版本与poiSheet依赖的POI版本不匹配,导致ColdFusion无法正确识别重载的setRepeatingRows方法。指定明确的POI版本后,对象版本统一,方法调用恢复正常。

内容的提问来源于stack exchange,提问作者Paolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:03:39