我正在开发一个excel VSTO加载项,在这个加载项中我构建了一些工作表以便稍后处理它们。我想稍后知道用户打开和excel工作簿,如果工作簿是用我的加载项构建的,或者不对它进行一些处理。为此,我尝试使用CustomDocumentProperties。
我面临两个问题:
调用函数来构造工作簿:
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;
}
提前感谢您的宝贵帮助。
答案 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;
}
}
瞧