2016-09-28 73 views
2

我們在C#中有Excel加載項。爲了支持我們使用的一些功能Worksheet.CustomProperties。我們發現在添加一些自定義屬性後,我們正在改變它的值。例如,我們通過Add方法設置「1」。在某個時候,我們將相同的值更改爲「2」。然後我們保存工作簿並再次打開它。出於某種原因,我們看到「1」而不是「2」。爲什麼?看起來我錯過了一些東西,但不知道是什麼。 更新時間:在Excel工作表中保存CustomProperty

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; 
    } 
} 

這就是我們如何管理自定義屬性。當我們保存我們做以下事情:

Workbook.SaveAs(filePath, AccessMode: XlSaveAsAccessMode.xlNoChange); 

當我在VBA中打開它時,看到我的CustomProperties沒有保存。

+1

沒有任何代碼我們也沒有。如果您尋求任何建議,請張貼更多信息。 – Pav

+0

@Pav你是對的。我添加了代碼,但可能還不夠。這是同時使用Aspose互操作的傳統項目。現在我將嘗試在VBA上創建POC來研究這種情況。 – Alezis

+0

我在VBA上的POC沒有顯示出問題。在我們找到解決方法的地方,但是這個代碼必須被重構。如果我有任何結果會在這裏分享。 – Alezis

回答

0

也許我過於簡單的任務,但我設置自定義屬性(例如,當文件被保存到SharePoint文檔庫屬性)如下:

Excel.Workbook wb; 

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

這是可能的,這些都是不同的屬性比那些你正在談論的......這將改變屬性,例如,當你點擊「文件」標籤並在最右邊的面板中看到「屬性」列表。

相關問題