我正在尝试按照本文中描述的手动方法在 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);
}
我可以看到带有元素的新功能区。但是,我在功能区中有按钮,我想在这些按钮上添加句柄操作。以下是我的功能区 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 "。我知道我可以在文档中编写宏功能。但是,由于自定义功能区将在服务器端动态添加,我不确定如何添加动态宏。有人可以帮忙吗?