Я пытаюсь динамически добавить новую пользовательскую ленту в документ Word 2007, следуя ручному методу, описанному в этой статье: - http://msdn.microsoft.com/en-us/library/aa338202(v=office.12).aspx.
В статье указано следующее: -
a) Создайте файл XML с именем customUI.xml, который будет содержать элементы, которые вы хотите отобразить на вкладке, и поместите их в папку с именем customUI.
b) Переименуйте документ Word 2007 в .zip.Добавьте указанную выше папку «customUI» в zip-файл.
c) Добавьте следующее отношение к файлу «_rels / rels» в .zip-файле: -
<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". Я знаю, что могу написать функцию макроса в документе.Однако, поскольку пользовательская лента будет добавляться динамически на стороне сервера, я не уверен, как можно динамически добавлять макрос. Кто-нибудь может помочь?