Получить весь документ Word в приложении панели задач / office.js

Работая в Word 2013 (настольный компьютер) и office.js, мы видим некоторую функциональность, связанную с выбором пользователя (GetSelectedDataAsync, SetSelectedDataAsync), но ничего, что могло бы позволить вам просмотреть весь документ (OpenXML). Я что-то упускаю?


person dnord    schedule 19.01.2015    source источник
comment
У меня тот же запрос, API, похоже, не позволяет этого.   -  person AHMED EL-HAROUNY    schedule 23.01.2015


Ответы (2)


Office.context.document.getFileAsync позволит вам получить весь документ в одном из 3-х форматов:

  • сжатый: возвращает весь документ (.pptx или .docx) в формате Office Open XML (OOXML) в виде массива байтов.
  • pdf: возвращает весь документ в формате PDF в виде массива байтов.
  • text: возвращает только текст документа в виде строки. (только слово)

Вот пример, взятый из MSDN:

var i = 0;
var slices = 0;

function getDocumentAsPDF() {

    Office.context.document.getFileAsync("pdf", { sliceSize: 2097152 }, function (result) {
        if (result.status == "succeeded") {
            // If the getFileAsync call succeeded, then
            // result.value will return a valid File Object.
            myFile = result.value;
            slices = myFile.sliceCount;
            document.getElementById("result").innerText = " File size:" + myFile.size + " #Slices: " + slices;

            // Iterate over the file slices.
            for (i = 0; i < slices; i++) {
                var slice = myFile.getSliceAsync(i, function (result) {
                    if (result.status == "succeeded") {
                        doSomethingWithChunk(result.value.data);
                        if (slices == i) // Means it's done traversing...
                        {
                            SendFileComplete();
                        }
                    }
                    else
                        document.getElementById("result").innerText = result.error.message;
                });
            }
            myFile.closeAsync();
        }
        else
            document.getElementById("result2").innerText = result.error.message;
    });
}
person Alex Sanséau    schedule 26.02.2015

Это не совсем то, о чем вы просили (это только тело документа), но это помогло мне... Поэтому я размещаю его здесь, поскольку именно здесь я оказался, когда искал свою проблему в Google.

Документация здесь: https://dev.office.com/reference/add-ins/word/body предполагает, что getOoxml() даст вам тело документа. Существует также текст свойства, который вернет вам текстовое содержимое.

То, как работает этот API, не слишком прямолинейно, однако примеры в онлайн-документе действительно помогают начать работу.

Всего наилучшего,

person Leo    schedule 23.02.2017