设置的例外excel工作簿的自定义文档属性

时间:2017-06-29 07:41:17

标签: c# excel exception vsto

我正在开发一个excel VSTO加载项,在这个加载项中我构建了一些工作表以便稍后处理它们。我想稍后知道用户打开和excel工作簿,如果工作簿是用我的加载项构建的,或者不对它进行一些处理。为此,我尝试使用CustomDocumentProperties。

我面临两个问题:

  • Visual Studio调试器不评估DocumentProperties变量的子项,我无法检查它们。
  • 当我尝试通过调用DocumentProperties.Add创建一个新的DocumentPropertiy时,我得到一个ArgumentException,声明该值不在范围内。

调用函数来构造工作簿:

public void InitWorkbook()
{
    workingBook = Globals.Factory.GetVstoObject(Application.ActiveWorkbook);
    var dps = (DocumentProperties)workingBook.CustomDocumentProperties;
    if (!customDocumentPropertyExist("validctcwb", dps))
    {
          // some sheet creation and listobject creation    
          dps.Add("validctcwb", false);
    }
}

bool customDocumentPropertyExist(string name, DocumentProperties dps)
{
     foreach (DocumentProperty p in dps)
     {
         if (p.Name == name)
         {
              return true;
         }
     }
     return false;
}

提前感谢您的宝贵帮助。

1 个答案:

答案 0 :(得分:1)

我在Addin中也这样做,以生成唯一的ID。

var propertyName = "validctcwb";
var propertyValue = false;
var propertyType = MsoDocProperties.msoPropertyTypeBoolean;
dps.Add(propertyName, false, propertyType, propertyValue);

如果您希望在debuging时看到值,可以引入以下方法:

public static IEnumerable<CustomProperty> GetCustomDocumentProperties(Workbook workbook)
{
    foreach (CustomProperty property in workbook.CustomDocumentProperties)
    {
        yield return property;
    }
}