Compartilhar via


Office.File interface

Representa o arquivo de documento associado a um Suplemento do Office.

Comentários

Aceda ao objeto Ficheiro com a propriedade AsyncResult.value na função de chamada de retorno transmitida para o método Document.getFileAsync.

Exemplos

// 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.
    }
}

Propriedades

size

Obtém o tamanho do arquivo de documento em bytes.

sliceCount

Obtém o número de fatias em que o arquivo está dividido.

Métodos

closeAsync(callback)

Fecha o arquivo do documento.

getSliceAsync(sliceIndex, callback)

Retorna a fatia especificada.

Detalhes da propriedade

size

Obtém o tamanho do arquivo de documento em bytes.

size: number;

Valor da propriedade

number

sliceCount

Obtém o número de fatias em que o arquivo está dividido.

sliceCount: number;

Valor da propriedade

number

Detalhes do método

closeAsync(callback)

Fecha o arquivo do documento.

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

Parâmetros

callback

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

Opcional. Uma função que é invocada quando a chamada de retorno é devolvida, cujo único parâmetro é do tipo Office.AsyncResult.

Retornos

void

Comentários

Conjunto de requisitos: Ficheiro

No more than two documents are allowed to be in memory; otherwise the Document.getFileAsync operation will fail. Use the File.closeAsync method to close the file when you are finished working with it.

Na função de chamada de retorno transmitida para o método closeAsync, pode utilizar as propriedades do objeto AsyncResult para devolver as seguintes informações.

Propriedade Usar
AsyncResult.value Devolve undefined sempre porque não existe nenhum objeto ou dados a obter.
AsyncResult.status Determinar o sucesso ou falha da operação.
AsyncResult.error Acessar um objeto Error que fornecerá informações de erro se a operação tiver falhado.
AsyncResult.asyncContext Defina um item de qualquer tipo que seja devolvido no objeto AsyncResult sem ser alterado.

getSliceAsync(sliceIndex, callback)

Retorna a fatia especificada.

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

Parâmetros

sliceIndex

number

Especifica o índice com base em zero da fatia a ser recuperada. Obrigatório.

callback

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

Opcional. Uma função que é invocada quando a chamada de retorno é devolvida, cujo único parâmetro é do tipo Office.AsyncResult. A value propriedade do resultado é o objeto Office.Slice .

Retornos

void

Comentários

Conjunto de requisitos: Ficheiro

Na função de chamada de retorno transmitida para o método getSliceAsync, pode utilizar as propriedades do objeto AsyncResult para devolver as seguintes informações.

Propriedade Usar
AsyncResult.value Acessar o objeto Slice.
AsyncResult.status Determinar o sucesso ou falha da operação.
AsyncResult.error Acessar um objeto Error que fornecerá informações de erro se a operação tiver falhado.
AsyncResult.asyncContext Defina um item de qualquer tipo que seja devolvido no objeto AsyncResult sem ser alterado.

Exemplos

// 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();
            }
        });
    }
}