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가 저장되지 않았습니다.
코드가 없어도 우리는 할 수 없습니다. 조언을 구하는 경우 좀 더 자세한 정보를 게시하십시오. – Pav
@Pav 당신 말이 맞습니다. 코드를 추가했지만, 아마도 충분하지 않습니다. 이것은 Aspose와 interop를 동시에 사용하는 레거시 프로젝트입니다. 이제 VBA에서 POC를 만들어이 사례를 연구하려고합니다. – Alezis
VBA의 내 POC에 문제가 표시되지 않았습니다. 우리는 해결 방법을 찾았지만이 코드는 리팩토링되어야합니다. 만약 내가 어떤 결과가 있다면 여기에 공유 할 것입니다. – Alezis