2012-05-20 4 views
5

시트를 읽기 위해 cfspreadsheet 읽기를 사용하고 있습니다.여러 단어로 된 쿼리 열에 액세스하는 방법은 무엇입니까?

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

문제는 일부 헤더에 두 개 이상의 단어가 포함되어 있다는 것입니다. 그래서 나는 조금이 같은 쿼리로 끝날 : 나는 열 이름에 공백이 열 중 하나에 액세스하려고하면, 나는 오류가 발생

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

.

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

시도한 적이 있지만 작동하지 않았습니다. 내가받는 엑셀 시트의 형식을 제어 할 수는 없습니다. 여러 단어로 된 열에 액세스 할 수있는 방법이 있습니까? 대괄호 표기법을 사용하는 경우

답변

13

내용이 너무 문자열로 끝날해야합니다 따옴표를 사용하지 않는 경우, 당신과 같이 이루어집니다 변수에 전달하는

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


:

를 당신은 괄호 전에 쿼리 이름을 사용해야합니다
<cfset ColumnName = 'start date' /> 

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


주 - 당신은 단순히 [ColumnName]를 작성하는 경우는 다음이 인라인 배열 생성 표기법 변수를 액세스 할 수 없습니다. 또한

, 경우 쿼리 루프의 외부를 사용하여 (즉, cfoutput 쿼리 속성/cfloop하지 이내), 당신은 또한 범위에 즉

spreadsheetData[ColumnName][spreadsheetData.CurrentRow] 

CurrentRow 변수를 필요로 (또는 자신을 제공 명시적인 수/변수). 레이로


는 cfspreadsheet 특정 행동, 당신은 또한 직접 액세스 할 일, 예를 들어,에 열 이름을 바꾸려면 columnnames 속성을 지정할 수 있습니다, 아래의 노트 베드로의 대답에 추가

<cfspreadsheet query=".." columnNames="Foo,Bar,StartDate,Etcetera" ..> 
+1

, 당신은 또한 사용할 수 명심'columnNames'는 = 즉''. – Leigh

+0

@ 피터 - 첫 번째 샘플 코드를 시도 할 때 "복잡한 개체 유형을 간단한 값으로 변환 할 수 없습니다."라는 오류 메시지가 나타납니다. – froadie

+1

@Peter -이 코드는 작동합니다 -' # spreadsheetData [ '시작 날짜'] [currentRow] #'. 이 방법을 사용하는 덜 명시적인 방법이 있었으면 좋겠다. – froadie

관련 문제