2016-03-30 20 views
2

Kendi amaçlarım için CustomUI yardımcı programının bir sürümünü geliştiriyorum. Office 2007 için orijinal CustomUI öğesini oluşturan MSDN'den kodla başladım, ancak bu sürümde sahne arkasını nasıl uygulayacağımı bulamıyorum.Excel 365 için CustomUI doldurun Backstage

orijinal code taken from MSDN geçerli: customUIcontent (xmlns= "http://schemas.microsoft.com/office/2009/07/customui" kullanarak) <backstage> etiketleri ile XML içeren

Using document As SpreadsheetDocument = SpreadsheetDocument.Open(fileName, True) 
    ' You can only have a single ribbon extensibility part. 
    ' If the part doesn't exist, add it. 
    Dim part = document.RibbonExtensibilityPart 
    If part Is Nothing Then 
    part = document.AddRibbonExtensibilityPart 
    End If 
    part.CustomUI = New CustomUI(customUIContent) 
    part.CustomUI.Save() 
End Using 

, bu kod başarısız olur.

Örnek sahne arkasını çalışma kitabına eklemek için özgün CustomUI yardımcı programını kullandım. XML incelemesinde (bir saatte), ek bir RibbonAndBackstageCustomizationsPart öğesi buluyorum. RibbonExtensibilityPart için RibbonAndBackstageCustomizationsPart yerine özgün kodu çoğaltmaya çalıştım - ancak bu part.CustomUI = New CustomUI(customUIContent) satırında başarısız oldu.

Örneğimde XML içeriğinin daha ayrıntılı incelenmesinde, orijinal XML'in etiketlerinin "mso14" önekine sahip olduğu (bu nedenle CustomUI'nin CustomUI14.xml'yi CustomUI12.xml bölümlerinden ayrı olarak gösterme nedenidir) varyantlarını içeren innerXML ve outerXML'yi buluyorum. .

RibbonAndBackstageCustomizationsPart öğesinin XML'imle nasıl doldurulacağı konusunda yardım için arama yaptım, ancak doğru sözdizimini bulamadım.

RibbonAndBackstageCustomizationsPart öğesinin doldurulması için uygun yöntemi söyleyen var mı lütfen?

VS 2012.

çok teşekkürler ile Açık XML 2.5 SDK kullanıyorum.

S.S .: Bu soruyu ericwhite.com'da bugün daha önce yayınladım; daha geniş kitlelere ulaşmak için burada tekrarlayın. :-)

+0

: Burada

referans için Ofisi kulis görünümde bir sekme eklemek için Açık XML 2.5 kullanılan bir örnektir almak. – Tomalak

cevap

0

Ofis için iki farklı özel kullanıcı arabirimi sürümü vardır. İlk sürüm http://schemas.microsoft.com/office/2006/01/customui ad alanı altında ve ikinci sürüm ise http://schemas.microsoft.com/office/2009/07/customui yeni ad alanı altında.

Backstage görünümü Office 2010'dan tanıtıldı ve yeni ad alanını kullanmamız gerekiyor. Ve Açık XML 2.5'de, şerit XML'i yeni sürüm adı alanına eklemek için RibbonAndBackstageCustomizationsPart'ı kullanmalıyız. Sen hakkında konuşmak XML parçacıkları, hem de tam hata iletileri içermelidir

public void Main() 
    { 

     string docName = @"C:\book1.xlsx"; 
     string customUIContent = "<customUI xmlns=\"http://schemas.microsoft.com/office/2009/07/customui\">" 
           + "<backstage>" 
           + "<tab id = \"customTab1\" label = \"customTab1\" ></tab>" 
           + "</backstage>" 
           + "</customUI >"; 
     using (SpreadsheetDocument document = SpreadsheetDocument.Open(docName, true)) 
     { 
      if (document.RibbonAndBackstageCustomizationsPart == null) 
      { 
       document.AddRibbonAndBackstageCustomizationsPart(); 
       document.RibbonAndBackstageCustomizationsPart.CustomUI = new DocumentFormat.OpenXml.Office2010.CustomUI.CustomUI(customUIContent); 
       document.RibbonAndBackstageCustomizationsPart.CustomUI.Save(); 
      } 
     } 
    } 
+0

Teşekkür ederiz! XML'yi yeni ad alanını yansıtacak şekilde değiştirdim, ancak değişiklik kitaplığı sürümünü fark etmemiştim. Çok takdir edildi. – Nick