Frage

Ich verwende einen cfspreadsheet-Lesevorgang, um ein Blatt in ein Abfrageobjekt einzulesen.

<cfspreadsheet action="read" src="TestExcel.xls" sheet="1" query="spreadsheetData" headerrow="1" excludeHeaderRow="true"> 

Das Problem besteht darin, dass einige Überschriften mehr als ein Wort enthalten.Am Ende habe ich eine Abfrage, die ungefähr so ​​aussieht:

ID  Name    Start Date  End Date
3   Test    1/1/2009    1/1/2013
17  Test 2  11/11/2010  11/11/2012

Wenn ich versuche, auf eine der Spalten zuzugreifen, deren Spaltenname ein Leerzeichen enthält, erhalte ich eine Fehlermeldung.

<cfoutput query="spreadsheetData">
   #start date#
</cfoutput>

ich habe es versucht #[start date]# auch, aber das hat nicht funktioniert.Ich kann das Format der Excel-Tabelle, die ich erhalte, nicht steuern.Gibt es eine Möglichkeit, auf die Spalten mit mehreren Wortüberschriften zuzugreifen?

War es hilfreich?

Lösung

Bei Verwendung der Klammernotation muss der Inhalt als Zeichenfolge enden, also:

<cfoutput query="spreadsheetData">
    #spreadsheetData['start date'][CurrentRow]#
</cfoutput>


Wenn Sie keine Anführungszeichen verwenden, übergeben Sie eine Variable, was folgendermaßen geschieht:

<cfset ColumnName = 'start date' />

<cfoutput query="spreadsheetData">
    #spreadsheetData[ColumnName][CurrentRow]#
</cfoutput>


Beachten Sie, dass Sie den Abfragenamen vor den Klammern verwenden müssen – wenn Sie einfach schreiben [ColumnName] Dann handelt es sich um eine Inline-Array-Erstellungsnotation, nicht um den Zugriff auf die Variable.

Auch wenn dies außerhalb einer Abfrageschleife verwendet wird (d. h. nicht innerhalb cfoutput/cfloop mit Abfrageattribut), müssen Sie auch den Bereich festlegen CurrentRow variabel, d.h.

spreadsheetData[ColumnName][spreadsheetData.CurrentRow]

(oder geben Sie Ihre eigene explizite Nummer/Variable an).


Wie Leigh unten anmerkt, können Sie für cfspreadsheet-spezifisches Verhalten auch Folgendes angeben columnnames Attribut, um die Spalte in etwas umzubenennen, auf das direkt zugegriffen werden kann, z. B.

<cfspreadsheet query=".." columnNames="Foo,Bar,StartDate,Etcetera" ..>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top