2011-07-17 61 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