我正在使用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工作表的格式。有没有办法访问多个文本标题列?
答案 0 :(得分:13)
使用括号表示法时,内容必须以字符串结尾,所以:
<cfoutput query="spreadsheetData">
#spreadsheetData['start date'][CurrentRow]#
</cfoutput>
如果不使用引号,则传入一个变量,如下所示:
<cfset ColumnName = 'start date' />
<cfoutput query="spreadsheetData">
#spreadsheetData[ColumnName][CurrentRow]#
</cfoutput>
请注意,您必须在括号前使用查询名称 - 如果您只是编写[ColumnName]
,那么这是内联数组创建表示法,而不是访问变量。
另外,如果在查询循环之外使用它(即不 cfoutput
/ cfloop
中的查询属性),您还需要确定{{1}的范围变量,即
CurrentRow
(或提供您自己的显式数字/变量)。
正如Leigh在下面所述,对于特定于cfspreadsheet的行为,您还可以指定spreadsheetData[ColumnName][spreadsheetData.CurrentRow]
属性,将列重命名为可直接访问的内容,例如。
columnnames