Как получить доступ к столбцу запроса с несколькими словами?

Я использую чтение 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>

я пробовал #[start date]# также, но это не сработало. Я не могу контролировать формат листа Excel, который я получаю. Есть ли способ получить доступ к столбцам с несколькими заголовками?

1 ответ

Решение

При использовании скобочных обозначений содержимое должно заканчиваться строкой, поэтому:

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


Если вы не используете кавычки, вы передаете переменную, что делается так:

<cfset ColumnName = 'start date' />

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


Обратите внимание, что вы должны использовать имя запроса перед скобками - если вы просто напишите [ColumnName] тогда это встроенная запись создания массива, не имеющая доступа к переменной.

Кроме того, если использовать это за пределами цикла запроса (т.е. не в cfoutput/cfloop с атрибутом запроса), вам также необходимо CurrentRow переменная, т.е.

spreadsheetData[ColumnName][spreadsheetData.CurrentRow]

(или укажите свой собственный явный номер / переменную).


Как отмечает Ли ниже, для поведения, характерного для cfspreadsheet, вы также можете указать columnnames атрибут, чтобы переименовать столбец во что-то напрямую доступное, например

<cfspreadsheet query=".." columnNames="Foo,Bar,StartDate,Etcetera" ..>
Другие вопросы по тегам