2011-04-18 5 views
2

안녕하세요!Excel에 저장 가능한 값

Range.Value2을 사용하여 Excel 워크 시트에 직접 저장할 수있는 값의 유형과 특정 값이 가능한지 신속하게 확인하는 방법은 무엇입니까? 가정하자

I 오브젝트의 배열 아마도 multityped있다 (예를 들어, 1 intdoubleobject[]에 저장된 하나 Foo).

범위 3을 선택하고 Range.Value2을 사용하여이 배열을 저장하려고하면 예외가 발생합니다 (물론 Excel은 Foo을 알지 못합니다).

배열의 각 값을 확인하는 아이디어가 떠올랐다. 저장이 불가능한 경우 ToString()을 사용하여 문자열 표현으로 변환했다. 그러나 처음에 저장 가능한지 어떻게 확인합니까?

그런 식으로 뭔가를하고 결국 끔찍한 것 :

public bool storable<T>(T value) 
{ 
    return value is int || 
      value is uint || 
      value is short || 
      value is byte || 
      ... 
      value is string; 
} 

... 특히 각 is 것이다 변수 테스트 유형에 캐스팅 심각하게 성능에 영향을 미칠 것을 알고. 가끔 숫자 값이 아닌 문자열을 그래프와 다이어그램을 할 수 있기를 원하는 반면에

, 나는 string 유형 값을 미리 캐스팅을 감당할 수 없습니다.

내가 실수했거나 문제점에 대한 해결책을 제시 할 수 있습니까? 감사합니다.

+0

C#에서는이 작업을 수행 할 수 없지만 Excel에 저장할 수있는 내용을 익히려면 Excel SDK를 살펴보십시오. 핵심 개념은 XLOPER (또는 XLOPER12)'구조체'입니다.이 구조체는 뭉툭한'union'을 포함하고 있습니다 : http://msdn.microsoft.com/en-us/library/bb687869.aspx. 보다 캐주얼 한 답변을 원할 경우 http://stackoverflow.com/questions/1354046/return-a-user-defined-data-type-in-an-excel-cell/1365314#1365314를 참조하십시오. 어떤 종류의 추가 기능을 개발하는 경우 http://exceldna.codeplex.com/을 참조하십시오. – jtolle

답변

1

어떻게 든 입력 배열을 좀 더 강하게 입력 할 수 없다면,하지 말아야 할 일 (모든 "is"체크)을해야 할 것입니다. 최선의 방법은 캐스트를 주문하여 가장 일반적인 것들을 먼저 주문하는 것일 수 있습니다.

+0

그게 정확히 내가 한 짓이야. 나는 다른 방법이 없다고 생각합니다. – wh1t3cat1k