簡體   English   中英

不確定如何從VSTO中訪問OpenXML中設置的自定義屬性

[英]Not sure how to access custom properties set in OpenXML from within VSTO

我有一個有兩個要求的項目。 一種方法是創建一個簡單的程序,以從Excel外部將自定義屬性添加到excel電子表格。 第二個要求是在應用程序級別vsto Excel加載項內搜索並提取該自定義屬性(如果找到)。

到目前為止,我已經滿足了第一個要求,並且有一個程序可以通過OpenXML將一些數據添加到工作簿的CustomFileProperties中,如下所示:

using (var wb = SpreadsheetDocument.Open(WorkbookToRegister, true))
{
    Log("Finding existing properties...");
    var customPropsPart = wb.CustomFilePropertiesPart;
    if (customPropsPart == null)
    {
        Log("No properties found, adding new part...");
        customPropsPart = wb.AddCustomFilePropertiesPart();
    }

    var props = customPropsPart.Properties;
    if (props == null)
    {
        props = new DocumentFormat.OpenXml.CustomProperties.Properties();
        customPropsPart.Properties = props;
    }

    foreach (var prop in props.Where(
        prop => ((CustomDocumentProperty)prop).Name.Value == "niuVersionNumber"))
    {
        Log("Removing existing properties...");
        prop.Remove();
    }

    Log("Adding new properties,..");
    var versionProp = new CustomDocumentProperty();
    versionProp.FormatId = Guid.NewGuid().ToString("B");
    propertyGuid = versionProp.FormatId;
    versionProp.Name = "niuVersionNumber";
    propertyName = versionProp.Name;
    versionProp.VTBString = new VTBString(versionNumber);
    props.AppendChild(versionProp);
    var pid = 2;

    Log("Assigning IDs to properties,..");
    foreach (var item in props.Cast<CustomDocumentProperty>())
    {
        item.PropertyId = pid++;
    }
    Log("Saving...");
    props.Save();
}

如您所見,該代碼向文件中添加了一個名為“ niuVersionNumber”的屬性,其值為versionNumber 這可以完美地工作。

問題是第二個要求。 我還無法弄清楚如何從VSTO API中訪問該自定義屬性。

我已經搜索了MSDN和互連網,並且了解OpenXML和VSTO API文檔,但是很難完全理解如何使它工作。

任何建議或示例,將不勝感激!

問候,

感謝您的反饋,但最終問題是我對准了錯誤的對象。 我誤解了自定義屬性和自定義xml部分之間的區別。

而不是像這樣定位文檔的自定義屬性對象:

props = new DocumentFormat.OpenXml.CustomProperties.Properties();

我應該像這樣針對文檔的自定義xml部分:

var customWorkBookVersionXmlPart = wb.WorkbookPart.AddCustomXmlPart("application/xml");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM