Как получить доступ к столбцу запроса с несколькими словами?
-
12-12-2019 - |
Вопрос
Я использую cfspreadsheet read для чтения листа в объект запроса.
<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, который я получаю.Есть ли какой-нибудь способ получить доступ к столбцам заголовка с несколькими словами?
Решение
При использовании обозначения в квадратных скобках содержимое должно заканчиваться строкой, поэтому:
<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" ..>