逗号分隔行插入中的cfspreadsheet转义逗号

时间:2011-07-17 23:03:34

标签: list coldfusion spreadsheet comma cfspreadsheet

向coldfusion电子表格添加行的功能是SpreadsheetAddrow,它接受​​数据为“以逗号分隔的单元格条目列表,每列一个。”

我的部分数据中包含逗号。如何在不转义列表中的逗号的情况下转义数据中的逗号?

我目前正在创建一个包含该行内容的数组,然后将其转换为一个列表以添加到电子表格中:

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

3 个答案:

答案 0 :(得分: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++>
...

更新:但是,如果基础对象是查询而不是结构,那么使用CfSimplicity的SpreadSheetAddRows建议会更有效。

答案 1 :(得分:2)

如果要添加到工作表的数据位于查询对象(记录集)中,那么最简单的解决方案是使用SpreadSheetAddRows(),(而不是SpreadSheetAddRow - 单数)。

<cfset SpreadSheetAddRows( xlsObj,query )>

工作表列从查询列映射,因此数据中的逗号无关紧要。

即使数据采用其他格式,或者您只添加一行,将其转换为查询对象也是解决问题的有效方法,请参阅http://cfsimplicity.com/30/workaround-for-spreadsheetaddrow-limitation-when-column-values-contain-commas

答案 2 :(得分:0)

您可以将逗号替换为字符“#130;”。 (请参见来源:https://www.petefreitag.com/cheatsheets/ascii-codes/),它看起来与逗号相同,但不会造成任何问题。