09.06.2006, 11:00 | #11 |
Участник
|
2 belugin
Насчет & и т.п. Excel нормально отрабатывает их присутствие в данных, единственно - если угловые скобки идут парой <> - то будет ошибка формата. Но вообще согласен - надо отрабатывать такие ситуации. Вот код функции, заменяющей спецсимволы в строке X++: str 1 entity[5]; str 6 entityReference[5]; str getEntities(str s1) { int j, pos; ; for (j=1;j<=5;j++) { pos = strscan(s1, entity[j], 1, strlen(s1)); while (pos) { s1 = substr(s1, 1, pos-1) + entityReference[j] + substr(s1, pos+1, strlen(s1)); pos = strscan(s1, entity[j], pos + 1, strlen(s1)); } } return s1; } ; entity[1] = "&"; entity[2] = "<"; entity[3] = ">"; entity[4] = "'"; entity[5] = '"'; entityReference[1] = "&"; entityReference[2] = "<"; entityReference[3] = ">"; entityReference[4] = "'"; entityReference[5] = """; .... buf += strfmt( ... ledgerTrans.RecId, getEntities(ledgerTrans.AccountNum), getEntities(ledgerTable.AccountName), ledgerTable.AccountPlType, ledgerTrans.BondBatchTrans_RU, ledgerTrans.BondBatch_RU, date2str(ledgerTrans.TransDate, 321, 2, 3, 2, 3, 4), getEntities(ledgerTrans.Txt), strltrim(strrem(num2str(ledgerTrans.AmountMST, 10, 2, 1, 0), "+")), ledgerTrans.Crediting, #toFile ? "" : (cnt mod 2 == 1 ? " ss:StyleID=\"s15\"" : " ss:StyleID=\"s16\""), cnt mod 2 == 1 ? " ss:StyleID=\"s12\"" : " ss:StyleID=\"s13\"", cnt mod 2 == 1 ? " ss:StyleID=\"s10\"" : " ss:StyleID=\"s11\"", #toFile ? (cnt mod 2 == 1 ? " ss:StyleID=\"s15\"" : " ss:StyleID=\"s16\"") : ""); ... PS упс. исправил
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 09.06.2006 в 11:43. |
|
Теги |
benchmark, download, excel, faq, xml, законченный пример, производительность, экспорт/импорт |
|
|