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

StackOverflow https://stackoverflow.com//questions/10673441

  •  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" ..>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top