2015-06-08 7 views
2

Я хотел бы разработать надстройку. Эта надстройка должна использовать открытый xml (не все можно сделать с помощью VSTO + Open XML намного быстрее), НО есть ли возможность редактировать открытый документ? Например, я открыл презентацию PowerPoint (или таблицу документов Word/Excel), и я хотел бы заменить какой-либо текст с помощью Open XML, могу ли я его прочитать (из того, что я читал, чтение возможно) и обновление без закрытия этого файла, используя Open XML, конечно? Если да, как это сделать?VSTO Надстройка + Open XML

Существует некоторый метод feeddata(), потоки памяти, но я не знаю, как его использовать. Может ли кто-нибудь показать пример?

ответ

0

Цель VSTO и Open XML - разные.

VSTO в основном расширяет офис до вашей цели, когда вы запускаете addin в контексте приложения Office. И вы можете использовать Com interops, поскольку они уже доступны.

Open XML используется для автоматизации, например, для создания или редактирования документов, книг, в которых у вас нет офисного приложения. например, на сервере Asp.net вам не нужно устанавливать Office, но использовать Open XML для создания, редактирования документов, электронных таблиц или ppt.

В вашем случае, если вы собираетесь использовать подход VSTO, вам не нужно использовать Open XML sdk. Используйте доступные функции поиска и замены в соответствующих интерполяторах. После замены не забудьте сохранить DOC, XLS или PPT

Word

Excel

Powerpoint

+0

Я знаю, что у меня нет, но ... Я хочу :) Существует несколько вещей, которые не могут быть сделаны с помощью VSTO (и/или VBA). Например, теперь мне нужно изменить тип градиента заполнения формы. Нет возможности сделать это, используя ни VSTO, ни VBA. НО ... это можно сделать с помощью Open XML. С другой стороны, создание/обновление (в случае использования его на активном документе более важно) некоторые документы также намного быстрее работают с Open XML (но и сложнее). Я нашел что-то о OPC, но мне придется исследовать его глубже. – buks

+0

@buks Вы видели этот https://social.msdn.microsoft.com/Forums/vstudio/en-US/5c7ffa1c-9643-447c-bb5f-f0db1222d1a7/how-to-change-fill-type-to-gradient -for-shape-in-powerpoint-using-c? forum = vsto – Kiru

+0

Я видел подобное, я не вижу возможности изменять тип градиента (линейный, прямоугольный, дорожный, радиальный). Да, есть возможность применить предустановленный градиент и т. Д., Но в предустановленных градиентах от того, что я проверил, существуют только радиальные и линейные типы градиентов, нет доступных типов прямоугольников и градиентов пути. – buks

1
 var fileFullName = Globals.ThisAddIn.Application.ActiveDocument.FullName; 

     Globals.ThisAddIn.Application.ActiveDocument.Close(WdSaveOptions.wdSaveChanges, WdOriginalFormat.wdOriginalDocumentFormat, true); 

     //edit document using OpenXml here 

     Globals.ThisAddIn.Application.Documents.Open(fileFullName); 

Это работает для документов Word.

1

Ниже код работает для меня:

Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument; 

string XML = doc.Content.WordOpenXML; 

// XML Changes 

doc.Content.InsertXML(XML); 
Смежные вопросы