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\"") : "");
...
Время загрузки увеличивается на 3-4 с
PS упс. исправил