2011-07-17 62 views
3

向coldfusion電子表格添加行的函數是SpreadsheetAddrow,它接受數據爲「逗號分隔的單元格條目列表,每列一個」。cfspreadsheet轉義逗號逗號分隔的行插入

我的一些數據裏面有逗號。如何在不轉義列表中的逗號的情況下轉義數據中的逗號?

我目前正在創建與該行的內容數組,然後將其轉換爲一個列表添加到電子表格:

<cfset row = ArrayNew(1)> 
    <cfloop list="#structKeyList(setRecord.columns)#" index="key"> 
     <cfset ArrayAppend(row, "#Evaluate(key)#")> 
    </cfloop> 
    <cfset spreadsheetAddRow(xlsObj, "#ArrayToList(row)#")> 

回答

2

如果要添加到工作表的數據位於查詢對象(記錄集)中,那麼最簡單的解決方案是使用SpreadSheetAddRows()(與SpreadSheetAddRow相反 - 單數)。

<cfset SpreadSheetAddRows(xlsObj,query)> 

表格列是從查詢列映射而來的,因此數據中的逗號無關緊要。

即使數據是另一種格式,或者你只添加一個單列,將其轉換爲查詢對象變圓了這個問題的有效方法,請參閱http://cfsimplicity.com/30/workaround-for-spreadsheetaddrow-limitation-when-column-values-contain-commas

+0

感謝,使更多的意義 – Rumpleteaser

+0

@inKit - 你使用什麼類型的對象?如果它是一個「查詢」,這種方法要好得多。如果它是'struct',那麼轉換爲查詢是一個額外的步驟。所以SpreadsheetSetCellValue可能更有效。 – Leigh

+0

這是一個查詢,我正在使用該結構將查詢列名映射到電子表格的標題。 – Rumpleteaser

6

貌似ability to specify a different delimiter尚不支持。由於您已經循環,因此您可以跳過該陣列並使用SpreadsheetSetCellValue代替。你應該能夠消除evaluate()。

<cfset cols = structKeyArray(yourStruct) > 
<cfloop from="1" to="#arrayLen(cols)#" index="c"> 
    <cfset SpreadsheetSetCellValue(xlsObj, yourStruct[ cols[c] ], lastRow, c)> 
</cfloop> 
<cfset lastRow++> 
... 

更新:然而,如果基對象是一個查詢,而不是一個結構,那麼它是更有效地使用的SpreadSheetAddRows CfSimplicity的建議。

+0

+1偉大的正義。 – Nate