#ms-word #ms-office #office365 #office-js #javascript-api-for-office
#ms-word #ms-office #office365 #office-js #javascript-api-for-office
Вопрос:
Я разработал надстройку word с использованием word javascript api. Мой файл Document .docx находится на сервере, и мне нужно открыть этот документ .docx как новый документ Word нажатием кнопки в надстройке.
Пожалуйста, подскажите мне, как я могу открыть новый документ в надстройке word.
Спасибо.
Ответ №1:
Мы добавляем в API новый метод, который вы действительно можете использовать для достижения этой цели. Обратите внимание, что он находится в предварительном просмотре, что означает, что он будет запущен в производство через пару месяцев. Вам нужна последняя версия Office плюс ссылка на наш предварительный просмотр office.js чтобы попробовать это. The office.js предварительный просмотр здесь https://appsforoffice.microsoft.com/lib/beta/hosted/office.js
Посмотрите этот пример кода о том, как легко это сделать.
function onaddOpenDoc() {
Word.run(function (context) {
// this getDocumentAsBase64 assumes a valid base64-encoded docx file
var myNewDoc = context.application.createDocument(getDocumentAsBase64());
context.load(myNewDoc);
return context.sync()
.then(function () {
myNewDoc.open();
context.sync();
}).catch(function (myError) {
//otherwise we handle the exception here!
showNotification("Error", myError.message);
})
}).catch(function (myError) { showNotification("Error", myError.message); });
}
Комментарии:
1. Спасибо, он работает, как и ожидалось, в ожидании производства.
2. он все еще не запущен в производство? В
application
официальных документах нет атрибута context dev.office.com/reference/add-ins/shared/context . Кстати. Я использую angular 4, и в классе RequestContext в типах для Word-Namespace нет атрибута application.3. возможно ли каким-либо образом получить доступные функции для объекта-приложения?
4. На данный момент объект application имеет только этот единственный метод (в нашем предварительном просмотре)
5. Он не работает должным образом, если документ содержит макросы. Кнопка «Включить содержимое» появляется в первом документе (вместо открываемого документа), но нажатие на нее не активирует макросы во втором документе.
Ответ №2:
Открытие документа в новом экземпляре (т.Е. В Новом отдельном окне Word), по крайней мере, на данный момент, Не поддерживается JavaScript на основе Office.js API. Вы всегда начинаете с Context
объекта, который предоставит вам доступ к текущему активному документу через Context.document
свойство.
Что вы можете сделать, это вставить содержимое в существующий документ, например, с помощью body.insertOoxml
метода.
В настоящее время Office.js API по-прежнему ограничен по сравнению с классическим COM API. Если вам нужен полный набор функций, вы все равно можете рассмотреть возможность разработки решения COM или VSTO уже сегодня. Единственным недостатком является то, что ваша надстройка не будет работать ни на одной платформе, кроме Windows Desktop.
Комментарии:
1. @JuanBalmori: Это отличная новость! Но, если я правильно понял ваш ответ, это все еще в бета-версии. Есть ли какая-либо документация по бета-функциям? Или любой другой способ следить за функциями, которые будут добавлены?
2. да, это предварительный просмотр! пожалуйста, попробуйте! отправьте мне отзыв! у нас есть открытая спецификация, в которой мы отбрасываем все, что планируем отправить! проверьте это github.com/OfficeDev/office-js-docs/tree/WordJs_1.3_Openspec / … здесь больше информации о требованиях, чтобы попробовать это github.com/OfficeDev/office-js-docs/tree/WordJs_1.3_Openspec