如何使用多个单词访问查询列?

时间:2012-05-20 12:35:47

标签: coldfusion cfspreadsheet

我正在使用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 个答案:

答案 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