Como acessar coluna de consulta com várias palavras?
-
12-12-2019 - |
Pergunta
Eu estou usando uma cfspreadsheet ler para ler uma folha em um objeto de consulta.
<cfspreadsheet action="read" src="TestExcel.xls" sheet="1" query="spreadsheetData" headerrow="1" excludeHeaderRow="true">
O problema é que alguns dos cabeçalhos que contêm mais do que uma palavra.Assim que eu acabar com uma consulta um pouco parecido com este:
ID Name Start Date End Date
3 Test 1/1/2009 1/1/2013
17 Test 2 11/11/2010 11/11/2012
Se eu tentar acessar uma das colunas que têm um espaço na coluna nome, eu recebo um erro.
<cfoutput query="spreadsheetData">
#start date#
</cfoutput>
Eu tentei #[start date]#
bem, mas que não funcionou.Eu não posso controlar o formato de planilha do excel que eu receber.Existe alguma maneira de acesso a vários redigida-cabeçalho de colunas?
Solução
Quando utilizar o suporte de notação o conteúdo deve acabar como uma seqüência de caracteres, assim:
<cfoutput query="spreadsheetData">
#spreadsheetData['start date'][CurrentRow]#
</cfoutput>
Se você não usar aspas, que você está passando em uma variável, que é feito assim:
<cfset ColumnName = 'start date' />
<cfoutput query="spreadsheetData">
#spreadsheetData[ColumnName][CurrentRow]#
</cfoutput>
Observe que você deve usar o nome da consulta antes de colchetes - se simplesmente escrever [ColumnName]
então este é inline criação de matriz de notação, não acessar a variável.
Além disso, se utilizar esta fora de uma consulta loop (i.e. não dentro cfoutput
/cfloop
com o atributo de consulta), você também precisa âmbito do CurrentRow
variável, i.é.
spreadsheetData[ColumnName][spreadsheetData.CurrentRow]
(ou de fornecer o seu próprio número explícito/variável).
Como Leigh notas abaixo, para cfspreadsheet-comportamento específico, você também pode especificar o columnnames
atributo, para mudar o nome da coluna para algo diretamente acessível, e.g.
<cfspreadsheet query=".." columnNames="Foo,Bar,StartDate,Etcetera" ..>