Поделиться через


Office.File interface

Представляет файл документа, сопоставленный с надстройкой Office.

Комментарии

Доступ к объекту File с помощью свойства AsyncResult.value в функции обратного вызова, переданной методу Document.getFileAsync.

Примеры

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/get-file-in-slices-async.yaml

function getCurrentFile() {
    const sliceSize = 4096; /*Bytes*/

    // This snippet specifies a small slice size to show how the getFileAsync() method uses slices.
    Office.context.document.getFileAsync(Office.FileType.Compressed, { sliceSize: sliceSize }, function(result) {
        if (result.status === Office.AsyncResultStatus.Failed) {
            return onError(result.error);
        }

        // result.value is the File object.
        const file: Office.File = result.value
        getFileContents(file, onSuccess, onError); /* getFileContents is defined in the Office.File.getSliceAsync example. */
    });

    function onError(error: Office.Error): void {
        console.error(error);
    }

    function onSuccess(byteArray: number[]) {
        let base64string = base64js.fromByteArray(byteArray);
        // Do something with the file contents.
    }
}

Свойства

size

Получает размер файла в байтах.

sliceCount

Получает число срезов, на которые разделен файл.

Методы

closeAsync(callback)

Закрывает файл документа.

getSliceAsync(sliceIndex, callback)

Возвращает заданный срез.

Сведения о свойстве

size

Получает размер файла в байтах.

size: number;

Значение свойства

number

sliceCount

Получает число срезов, на которые разделен файл.

sliceCount: number;

Значение свойства

number

Сведения о методе

closeAsync(callback)

Закрывает файл документа.

closeAsync(callback?: (result: AsyncResult<void>) => void): void;

Параметры

callback

(result: Office.AsyncResult<void>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult.

Возвращаемое значение

void

Комментарии

Набор обязательных элементов: Файл

В памяти может храниться не более двух документов; в противном случае произойдет сбой операции Document.getFileAsync. Используйте метод File.closeAsync, чтобы закрыть файл после завершения работы с ним.

В функции обратного вызова, переданной методу closeAsync, вы можете использовать свойства объекта AsyncResult, чтобы получить следующие сведения.

Property Использовать
AsyncResult.value Всегда возвращается undefined , так как нет объекта или данных для извлечения.
AsyncResult.status Определяет, удалось ли выполнить операцию.
AsyncResult.error Доступ к объекту Error, который предоставляет сведения об ошибке, если операция завершилась неудачно.
AsyncResult.asyncContext Определите элемент любого типа, возвращаемый в объекте AsyncResult без изменения.

getSliceAsync(sliceIndex, callback)

Возвращает заданный срез.

getSliceAsync(sliceIndex: number, callback?: (result: AsyncResult<Office.Slice>) => void): void;

Параметры

sliceIndex

number

Задает индекс с отсчетом от нуля получаемого фрагмента. Обязательно.

callback

(result: Office.AsyncResult<Office.Slice>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult. Свойством value результата является объект Office.Slice .

Возвращаемое значение

void

Комментарии

Набор обязательных элементов: Файл

В функции обратного вызова, переданной в метод getSliceAsync, можно использовать свойства объекта AsyncResult, чтобы возвратить такие сведения:

Property Использовать
AsyncResult.value Доступ к объекту Slice.
AsyncResult.status Определяет, удалось ли выполнить операцию.
AsyncResult.error Доступ к объекту Error, который предоставляет сведения об ошибке, если операция завершилась неудачно.
AsyncResult.asyncContext Определите элемент любого типа, возвращаемый в объекте AsyncResult без изменения.

Примеры

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/26-document/get-file-in-slices-async.yaml

function getFileContents(
    file: Office.File,
    onSuccess: (byteArray: number[]) => void,
    onError: (error: Office.Error) => void
) {
    let expectedSliceCount = file.sliceCount;
    let fileSlices: Array<Array<number>> = [];

    console.log("Current file size in bytes: " + file.size);
    console.log("Number of file slices: " + file.sliceCount);

    getFileContentsHelper();

    /**
     * A helper function to retrieve all slices of the file recursively.
     * It fetches one slice at a time and stores it in the `fileSlices` array.
     * The recursion terminates when all slices have been retrieved.
     */
    function getFileContentsHelper() {
        file.getSliceAsync(fileSlices.length, function(result) {
            if (result.status === Office.AsyncResultStatus.Failed) {
                file.closeAsync();
                return onError(result.error);
            }

            // Got one slice, store it in a temporary array.
            fileSlices.push(result.value.data);

            if (fileSlices.length === expectedSliceCount) {
                console.log("All slices have been received.");
                file.closeAsync();

                let array = [];
                fileSlices.forEach((slice) => {
                    array = array.concat(slice);
                });

                onSuccess(array); /* onSuccess is defined in the Office.File example. */
            } else {
                getFileContentsHelper();
            }
        });
    }
}