Come accedere alla colonna della query con più parole?
-
12-12-2019 - |
Domanda
Sto usando una lettura cfspreadsheet per leggere un foglio in un oggetto query.
<cfspreadsheet action="read" src="TestExcel.xls" sheet="1" query="spreadsheetData" headerrow="1" excludeHeaderRow="true">
.
Il problema è che alcune delle intestazioni contengono più di una parola.Quindi finisco con una query un po 'come questa:
ID Name Start Date End Date
3 Test 1/1/2009 1/1/2013
17 Test 2 11/11/2010 11/11/2012
.
Se tento di accedere a una delle colonne con uno spazio nel nome della colonna, ottengo un errore.
<cfoutput query="spreadsheetData">
#start date#
</cfoutput>
.
Ho provato anche #[start date]#
, ma questo non ha funzionato.Non riesco a controllare il formato del foglio Excel che ricevo.C'è un modo per accedere alle colonne di intestazione a più parole?
Soluzione
Quando si utilizza la notazione della staffa, il contenuto deve finire come una stringa, quindi:
<cfoutput query="spreadsheetData">
#spreadsheetData['start date'][CurrentRow]#
</cfoutput>
.
Se non usi le virgolette, stai passando in una variabile, che è fatta come:
<cfset ColumnName = 'start date' />
<cfoutput query="spreadsheetData">
#spreadsheetData[ColumnName][CurrentRow]#
</cfoutput>
.
Si noti che è necessario utilizzare il nome della query prima delle staffe - Se si scrive semplicemente [ColumnName]
, questa è la notazione di creazione di array in linea, non accedere alla variabile.
Inoltre, se si utilizza questo al di fuori di un loop di query (I.e. non all'interno cfoutput
/ cfloop
con Attributo Query), è inoltre necessario sfoggiare la variabile CurrentRow
, I.e.
.
spreadsheetData[ColumnName][spreadsheetData.CurrentRow]
(o fornire il proprio numero / variabile esplicito).
Come sottolinea Leigh Notes, per il comportamento specifico del foglio cfspreadsheet, è anche possibile specificare l'attributo columnnames
, per rinominare la colonna in qualcosa di direttamente accessibile, ad esempio.
.<cfspreadsheet query=".." columnNames="Foo,Bar,StartDate,Etcetera" ..>