escape-запятая cfspreadsheet в строке с разделением запятыми - PullRequest
3 голосов
/ 18 июля 2011

Функция добавления строки в электронную таблицу Coldfusion: SpreadsheetAddrow, которая принимает данные как «Список разделенных запятыми ячеек, по одному на столбец.»

Некоторые из моих данных содержат запятые.Как экранировать запятые в моих данных, не экранируя запятые в списке?

В настоящее время я создаю массив с содержимым строки, а затем преобразую его в список для добавления в электронную таблицу:

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

Ответы [ 2 ]

6 голосов
/ 18 июля 2011

Похоже, возможность указать другой разделитель пока не поддерживается.Поскольку вы уже зациклились, вы также можете пропустить массив и использовать взамен SpreadsheetSetCellValue .Вы также должны быть в состоянии исключить метод define ().

<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 голосов
/ 19 июля 2011

Если данные, которые вы хотите добавить на лист, находятся в объекте запроса (набор записей), то самое простое решение - использовать SpreadSheetAddRows () (в отличие от SpreadSheetAddRow - единственное).Столбцы листа сопоставляются со столбцами запроса, поэтому запятые в данных не имеют значения.

Даже если данные в другом формате или вы добавляете только одну строку, преобразование их в объект запроса выполняетсяэффективный способ обойти проблему, см. http://cfsimplicity.com/30/workaround-for-spreadsheetaddrow-limitation-when-column-values-contain-commas

...