2014-06-10 1 views
1

의 Interop.ListObject에 대한 고유 식별자인스턴스에 고유 한 식별자를 삽입하거나 사용할 수있는 이미 구현 된 속성을 사용하는 방법이 필요합니다.VSTO-C#

문제는 그 I는 새로운 ListObject를 만드는거야 때

사용자가 해당 값을 변경할 수 있기 때문에 내가 컬렉션에 그것을 찾아 excelTableName 특성에 의존 할 수
var excelTable = worksheet.ListObjects.Add(ExcelInterop.XlListObjectSourceType.xlSrcExternal, DUMMY_CONNECTIONSTRING, false, true, cellRange); 

재산.

물점을 탐색 한 후에 상자 (예 : Tag 속성과 같이 Microsoft.Office.Tools.Excel.ListObject 유형의 개체가 존재 함)를 사용할 수 없음을 발견 한 후 종속성으로 인해이 지점에서 사용할 수 없습니다. DisplayName과 같은 다른 이상한 물건은 직접 설정할 수 없을뿐만 아니라 항상 Name 속성과 동일한 값을 반영합니다 (왜 언제든지 같은 값을 반영하는 2 개의 속성을 갖고 싶습니까?) .

내가 하나가 (좀 잘못 느낌이 이유를 모르겠어요) GUID를 저장하기 위해 Comment 속성을 사용 아마도이 클래스의 내 자신의 구현을 만들거나에 생각했습니다

excelTable.Comment = Guid.NewGuid().ToString(); 

당신이 제안 할 수 있습니다 이 작업을 수행하는 또 다른 방법은 무엇입니까? 감사합니다.

답변

2

Excel 개체에서 설정할 수있는 "태그"(또는 유사한) 속성이 없다는 것은 매우 실망 스럽습니다. 나는 너와 같은 문제에 직면 해있다. 다음은 사용할 수있는 두 가지 옵션이 있습니다 :

  • alternative text 속성 (테이블 것이 테이블과 대체 텍스트를 선택, 테이블을 마우스 오른쪽 버튼으로 클릭하여에만 표시됩니다). 주석 UI는 항상 볼 수 있기 때문에 이것은 아마도 Comment보다 조금 깨끗합니다.
  • ListObject에 대한 직접 참조를 포함하는 래퍼 객체를 생성 할 수도 있습니다. 생성 된 각 ListObject에 대해 하나의 래퍼 객체. 통합 문서를 다시 저장하거나 열 때까지 제대로 작동합니다. 통합 문서를 다시 연 후 테이블을 다시 식별 할 수 있어야하는 경우에는 주석 또는 대체 텍스트에 ID를 입력해야합니다. BeforeSave 및 AfterSave와 같은 이벤트를 사용하여 깨끗한 구현을 수행 할 수 있습니다. 저장하기 전에 대체 텍스트를 추가하여 디스크에 저장 한 다음 저장 후 다시 제거하여 사용자가 볼 수 없도록합니다. 랩퍼 오브젝트 및 대체 텍스트 제거).
+0

불행히도 AlternativeText는 Excel2007에서 사용할 수 없으므로 호환성 문제가 발생합니다. – Jim