【问题标题】:cfspreadsheet escape comma in comma separated row insertcfspreadsheet 在逗号分隔的行插入中转义逗号
【发布时间】:2011-07-17 23:03:33
【问题描述】:

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

我的一些数据中有逗号。如何在不转义列表中的逗号的情况下转义数据中的逗号?

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

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

【问题讨论】:

    标签: list coldfusion spreadsheet comma cfspreadsheet


    【解决方案1】:

    似乎尚不支持ability to specify a different delimiter。由于您已经在循环,您不妨跳过数组并改用SpreadsheetSetCellValue。您也应该能够消除评估()。

    <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 建议更有效。

    【讨论】:

      【解决方案2】:

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

      <cfset SpreadSheetAddRows( xlsObj,query )>
      

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

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

      【讨论】:

      • @inKit - 您使用的是什么类型的对象?如果是query,这种方法要好得多。如果是struct,则转换为查询是一个附加步骤。所以 SpreadsheetSetCellValue 可能更有效。
      • 这是一个查询,我正在使用该结构将查询列名称映射到电子表格的标题。
      • @inKit - 啊,好吧。我以为是struct。对于查询,SpreadSheetAddRows 效率更高。
      • 如果您想在查询中指定列怎么办。我尝试了解决方法,但在 #myCommaRow" 周围添加单引号对我不起作用。
      【解决方案3】:

      您可以将逗号替换为字符“#130;” (见源:https://www.petefreitag.com/cheatsheets/ascii-codes/),看起来和逗号一样,但不会产生任何问题。

      【讨论】:

        猜你喜欢
        • 2011-08-20
        • 1970-01-01
        • 2013-05-08
        • 1970-01-01
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多