3

coldfusion スプレッドシートに行を追加する関数は、SpreadsheetAddrow「列ごとに 1 つのセル エントリのコンマ区切りリスト」としてデータを受け入れるものです。

一部のデータにコンマが含まれています。リスト内のコンマをエスケープせずに、データ内のコンマをエスケープするにはどうすればよいですか?

現在、行の内容で配列を作成し、それをリストに変換してスプレッドシートに追加しています:

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

3 に答える 3

6

別の区切り文字を指定する機能はまだサポートされていないようです。すでにループしているため、配列をスキップして、代わりに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

于 2011-07-18T01:16:42.110 に答える
2

シートに追加するデータがクエリ オブジェクト (レコードセット) にある場合、最も簡単な解決策は、SpreadSheetAddRows() を使用することです (SpreadSheetAddRow - 単数形とは対照的に)。

<cfset SpreadSheetAddRows( xlsObj,query )>

シートの列はクエリ列からマッピングされるため、データ内のコンマは問題になりません。

データが別の形式である場合や、単一の行を追加するだけの場合でも、クエリ オブジェクトに変換することは問題を回避する効果的な方法です。http://cfsimplicity.com/30/workaround-for-spreadsheetaddrow-を参照してください。列の値にカンマが含まれる場合の制限

于 2011-07-19T07:43:45.213 に答える