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?

Foi útil?

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" ..>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top