2010-01-21 2 views
2

우리 같은 수식을 포함하는 Syncfusion GridControl 가지고 IF (R2 <> 0,100 * (R3-R2)/R2,0)Syncfusion XlsIO - 불필요한 토큰 예외

이러한 수식은 그리드에서 잘 작동하고을 수식 계산 엔진은 관련 PC에서 사용하는 지역 설정/숫자 형식 (예 : 영어, 프랑스어, 헝가리어)에 관계없이 정확한 결과를 제공합니다.

XlsIO GridtoExcel 함수를 사용하여 영어 국가 별 설정에서 Excel 파일을 만들 때도 완벽하게 작동합니다. , tNumber :

예기치 않은 token.Unexpected 토큰 유형 :

그러나, 우리는 우리가 Excel에서 세미콜론 인수 분리기를 사용하여 프랑스어, 헝가리어 등의 국가 별 설정에서 GridtoExcel을 사용하려고 할 때 아래 유형의 오류를 얻을 위치 : 26

우리는 SetSeparators 함수를 사용하려고 시도했지만 효과가 없습니다. 문자열 값 : 0, 위치 24에서 0입니다. 수식 : IF (R2 <> 0,100 * (R3-R2)/R2,0) (KB article에서 권장)

정확한 접근법에 대한 아이디어가 있습니까? 불행히도 documentation on SetSeparators은 여기에 그다지 도움이되지 않습니다.

많은 감사

리처드

+0

나는 Syncfusion을 사용하는 데 많은 문제가있었습니다. "보호 된 메모리를 읽으려고했습니다"라는 오류가 많이 있습니다. 이상하게 생각됩니다. 모든 것이 관리되어야한다고 생각했기 때문입니다. 당신이 많은 기쁨을 가지지 않는다면 나는 다른 일을 할 수있는 도구를 제안 할 수 있습니다. – Ian

+0

통합 문서를 만드는 동안 일시적으로 현재 문화권을 en-US로 설정하여이 문제를 해결할 수있었습니다. 나중에 다시 설정합니다. My.Application.ChangeCulture ('en-US') SetSeparators 문제가 버그로 간주되므로 Syncfusion에서보다 세련된 솔루션을 기다리고 있습니다. –

답변

1

SetSeparators() 메소드가 단독으로 통합 문서에 대한 설정되었다. Grid의 경우 GridFormulaEngine에서 구분 기호를 지정할 수 있습니다. GridFormulaEngine은 'en-US'문화를 기본 문화로 간주합니다. 다른 문화권에서는 ParseDecimalSeparator 및 ParseArgumentSeparator 속성을 SetSeparators() 메서드와 함께 명시 적으로 설정해야합니다. 여기에 코드

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

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

안부, 크리스토이다.