2015-10-08 3 views
5

Heute stieß ich auf einen sehr seltsamen Fall beim Lesen eines Vlue aus einer Tabelle und versuchen, sie auf eine Bedingung zu filtern und eine Tabelle aus den gefilterten Daten zu erstellen. Hier sind meine SchritteAbfrage erstellt von Query zurückgegeben von cfspreadsheet nicht mit richtigen Werten

  1. lesen Excel-Sheet

    <cfspreadsheet action="read" src="#local.sFilePath#" excludeHeaderRow="true" headerrow ="1" query="local.qExcelData" sheet="1" /> 
    
  2. erstellen Halte Abfrage

    <cfset local.columnNames = "LoanNumber,Product," /> 
    <cfset local.qSuccessData = queryNew(local.columnNames,"VarChar,VarChar") /> 
    
  3. Filter die Excel-Abfrage auf einem Zustand zurückgegeben, und fügen Sie die gültigen diejenigen in den neuen Halteabfrage

    <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. Erstellen Sie die neue Tabelle

    <cfspreadsheet action="write" query="local.qSuccessData" filename="#local.sTempSuccessFile#" overwrite="true"> 
    

aber ich bin mit dem folgenden Inhalt in meinem Excel-Blatt

Loannumber       Product 
[email protected] [email protected] 

Bitte helfen Sie dazu bekommen es die Arbeit.

+2

FWIW, 'coldfusion.sql.column @ 87875656we' ist die String-Darstellung eines komplexen Objekts (wie eine ganze Abfragespalte, anstatt eine der Einzelwerte innerhalb dieser Spalte). Der erste Teil ist der Klassenname des Objekts: 'coldfusion.sql.column' und der zweite Teil ist der [hashcode value] des Objekts (https://en.wikipedia.org/wiki/Java_hashCode%28%29). – Leigh

+0

@Leigh, Danke für Ihre Klarstellung. – shemy

+1

@Leigh, das war eine informative que –

Antwort

5

Ich glaube, dass die Abfrage-Schleife Werte nicht korrekt auf die Holding-Abfrage abbildet.

Modifizieren Sie bitte Ihre Schleife wie folgt:

<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> 
+1

versuchte Ihren Code .. [currentRow] hat meine Zeit gespeichert. Danke @ Yoossaf Abdulla. – shemy

Verwandte Themen