Syncfusion XlsIO - неожиданное исключение токена - PullRequest
3 голосов
/ 21 января 2010

У нас есть Syncfusion GridControl, который содержит формулы, такие как: IF (R2 <> 0,100 * (R3-R2) / R2,0)

Эти формулы отлично работают в сетке, и механизм расчета формул дает правильные результаты независимо от региональных настроек / числовых форматов, которые у нас есть на данном ПК (например, английский, французский, венгерский).

Они также отлично работают, когда мы используем функцию XlsIO GridtoExcel для создания файлов Excel с региональными настройками на английском языке.

Однако мы получаем ошибки описанного ниже типа, когда пытаемся использовать GridtoExcel в региональных настройках, таких как французский и венгерский, которые используют разделитель аргументов в виде точки с запятой в Excel:

Неожиданный токен. Неожиданный тип токена: tNumber, строковое значение:, 0 в позиции 24. Формула: IF (R2 <> 0,100 * (R3-R2) / R2,0), позиция: 26

Мы пытались использовать функцию SetSeparators, но она не действует (как рекомендуется в статье KB )

Есть идеи о правильном подходе здесь? К сожалению, документация по SetSeparators здесь не слишком полезна.

Большое спасибо

Richard

1 Ответ

2 голосов
/ 31 января 2013

Метод SetSeparators () был установлен только для WorkBook. Для Grid вы можете указать разделители в GridFormulaEngine. GridFormulaEngine рассматривает культуру «en-US» как культуру по умолчанию. Для других культур свойства ParseDecimalSeparator и ParseArgumentSeparator должны быть установлены явно вместе с методом SetSeparators (). Вот код,

 GridFormulaEngine.ParseDecimalSeparator = char.Parse(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);

 GridFormulaEngine.ParseArgumentSeparator = char.Parse(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator);

С уважением, Христо.

...