从cfspreadsheet返回的Query创建的查询没有正确的值

时间:2015-10-08 15:51:25

标签: coldfusion cfspreadsheet

今天,当我从电子表格中读取污道并试图在条件下过滤它们并从过滤后的数据中创建电子表格时,我遇到了一个非常奇怪的情况。这是我的步骤

  1. 阅读Excel表格

    <cfspreadsheet action="read" src="#local.sFilePath#"    excludeHeaderRow="true" headerrow ="1" query="local.qExcelData" sheet="1" />
    
  2. 创建保留查询

    <cfset local.columnNames = "LoanNumber,Product," />
    <cfset local.qSuccessData = queryNew(local.columnNames,"VarChar,VarChar") />
    
  3. 在条件上过滤Excel返回的查询,并将有效的查询添加到新的保留查询

    <cfloop query="local.qExcelData" >
            <cfif ListFind(local.nExceptionRowList,local.qExcelData.currentrow) EQ 0>
              <cfset queryAddRow(local.qSuccessData) />
              <cfset querySetCell(local.qSuccessData, 'LoanNumber', local.qExcelData['Loan Number']) />
              <cfset querySetCell(local.qSuccessData, 'Product', local.qExcelData['Product']) />
            </cfif>
    </cfloop>
    
  4. 创建新电子表格

    <cfspreadsheet action="write" query="local.qSuccessData" filename="#local.sTempSuccessFile#" overwrite="true">
    
  5. 但是我在excel表中获得了以下内容

    Loannumber                           Product
    coldfusion.sql.column@87875656we    coldfusion.sql.column@89989ER
    

    请帮助解决这个问题。

1 个答案:

答案 0 :(得分:5)

我认为查询循环没有正确地将值映射到保持查询。

请修改您的循环,如下所示:

<cfloop query="local.qExcelData" >
    <cfif ListFind(local.nExceptionRowList,local.qExcelData.currentrow) EQ 0>
      <cfset queryAddRow(local.qSuccessData) />
      <cfset querySetCell(local.qSuccessData, 'LoanNumber', local.qExcelData['Loan Number'][currentRow]) />
      <cfset querySetCell(local.qSuccessData, 'Product', local.qExcelData['Product'][currentRow]) />
    </cfif>
</cfloop>