我尝试按照本文所述的手动方法在Word 2007文档中动态添加新的自定义功能区: - http://msdn.microsoft.com/en-us/library/aa338202(v=office.12).aspx。
本文指定以下内容: -
a)创建一个名为customUI.xml的XML文件,其中包含要显示的元素 在选项卡中,将其放在名为customUI的文件夹中。
b)将Word 2007文档重命名为.zip。将上述“customUI”文件夹添加到zip文件中。
c)将以下关系添加到.zip文件中的“_rels / rels”文件中: -
<Relationship Type="http://schemas.microsoft.com/office/2006/
relationships/ui/extensibility" Target="/customUI/customUI.xml"
Id="customUIRelID" />
我们是否有一些代码示例使用OpenXML SDK实现相同的目标?例如,如何将“RibbonExtensibilityPart”(包含功能区XML)添加到文档中?
编辑: -
这就是我做上述步骤的方法: -
string documentFileName = <path of the docx file>;
string ribbonXml = <path of the ribbon XML file>;
using (WordprocessingDocument myDoc = WordprocessingDocument.Open(documentFileName, true))
{
MainDocumentPart mainPart = myDoc.MainDocumentPart;
if (myDoc.GetPartsCountOfType<RibbonExtensibilityPart>() > 0)
myDoc.DeletePart(myDoc.GetPartsOfType<RibbonExtensibilityPart>().First());
RibbonExtensibilityPart ribbonExtensibilityPart = myDoc.AddNewPart<RibbonExtensibilityPart>();
ribbonExtensibilityPart.CustomUI = new DocumentFormat.OpenXml.Office.CustomUI.CustomUI(File.ReadAllText(ribbonXML));
myDoc.CreateRelationshipToPart(ribbonExtensibilityPart);
}
我可以看到带有元素的新功能区。 但是,我在功能区中有按钮,我想在这些按钮上添加句柄操作。以下是我的Ribbon XML的样子: -
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="CustomTab" label="My Tab">
<group id="MyGroup" label="My Group" >
<button id="Button1" label="My Large Button"
size="large"/>
<button id="Button2" label="My Normal Button"
size="normal" *onAction="ThisDocument.MyOtherButtonMacro"* />
</group >
</tab>
</tabs>
</ribbon>
</customUI>
看一下“ onAction =”ThisDocument.MyOtherButtonMacro “。我知道我可以在文档中编写宏函数。但是,因为自定义功能区将在服务器端动态添加,我不确定如何动态添加宏。有人可以帮忙吗?