2016-09-28 4 views
2

Excel 추가 기능이 C#에 있습니다. 일부 기능을 지원하기 위해 Worksheet.CustomProperties을 사용하고 있습니다. 우리는 사용자 정의 속성을 추가 한 후에 값을 변경한다는 것을 알았습니다. 예를 들어 Add 메소드를 통해 "1"을 설정합니다. 어떤 시점에서 같은 값을 "2"로 변경합니다. 그런 다음 통합 문서를 저장하고 다시 엽니 다. 어떤 이유로 우리는 "2"대신에 "1"을 봅니다. 왜 ? 내가 뭔가를 놓친 것 같지만 무엇을 모르겠다. 업데이트 :Excel에서 사용자 정의 특성 저장 워크 시트

public class CustomPropertyUtil 
{ 
    protected readonly Worksheet Sheet; 

    public WorkSheetCustomPropertyUtil(Worksheet sheet) 
    { 
     this.Sheet = sheet; 
    } 

    protected bool Exists(string propertyName) 
    { 
     try 
     { 
      return Sheet.CustomProperties.Cast<CustomProperty>().Any(c => c.Name == propertyName); 
     } 
     catch (System.Runtime.InteropServices.COMException) 
     { 
      return false; 
     } 
    } 

    protected object GetValue(string propertyName) 
    { 
     CustomProperty property = GetProperty(propertyName); 
     return property != null ? property.Value : null; 
    } 

    protected void SetValue(string propertyName, object value) 
    { 
     CustomProperty customProperty = GetProperty(propertyName); 

     if (customProperty == null) 
     { 
      AddCustomProperty(propertyName, value); 
     } 
     else 
     { 
      customProperty.Value = value; 
     } 

    } 

    private void AddCustomProperty(string propertyName, object value) 
    { 
     Sheet.CustomProperties.Add(propertyName, value); 
    } 

    protected CustomProperty GetProperty(string propertyName) 
    { 
     return Exists(propertyName) 
      ? Sheet.CustomProperties.Cast<CustomProperty>().FirstOrDefault(c => c.Name == propertyName) 
      : null; 
    } 
} 

이것은 우리가 사용자 정의 속성을 관리하는 방법입니다. 저장시 다음을 수행합니다.

VBA에서 열면 내 CustomProperties가 저장되지 않았습니다.

+1

코드가 없어도 우리는 할 수 없습니다. 조언을 구하는 경우 좀 더 자세한 정보를 게시하십시오. – Pav

+0

@Pav 당신 말이 맞습니다. 코드를 추가했지만, 아마도 충분하지 않습니다. 이것은 Aspose와 interop를 동시에 사용하는 레거시 프로젝트입니다. 이제 VBA에서 POC를 만들어이 사례를 연구하려고합니다. – Alezis

+0

VBA의 내 POC에 문제가 표시되지 않았습니다. 우리는 해결 방법을 찾았지만이 코드는 리팩토링되어야합니다. 만약 내가 어떤 결과가 있다면 여기에 공유 할 것입니다. – Alezis

답변

0

아마 나는 당신의 작업을 과도하게 단순화했지만, 나는 (파일을 SharePoint 문서 라이브러리에 저장 될 때, 예를 들어, 속성)로 다음과 사용자 정의 속성을 설정합니다

Excel.Workbook wb; 

wb.ContentTypeProperties["Region"].Value = "Northeast"; 

그것은 가능성이 다른 속성은 당신이 말하는 것들은 ... "File"탭을 클릭하고 가장 오른쪽 패널의 "Properties"목록을 볼 때와 같이 속성을 변경합니다.