6

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

列名にスペースが含まれている列の1つにアクセスしようとすると、エラーが発生します。

<cfoutput query="spreadsheetData">
   #start date#
</cfoutput>

私も試しまし#[start date]#たが、うまくいきませんでした。受け取るExcelシートの形式を制御できません。複数の単語のヘッダー列にアクセスする方法はありますか?

4

1 に答える 1

14

角かっこ表記を使用する場合、内容は文字列になる必要があるため、次のようになります。

<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" ..>
于 2012-05-20T12:37:47.013 に答える