Как я могу использовать Excel надстройку загрузить файл 1G - PullRequest
1 голос
/ 03 июля 2019

Я хотел загрузить файл 1G с помощью надстройки Excel. но я столкнулся с некоторыми проблемами, когда использовал Office.context.document.getFileAsync ().

Ожидаемое поведение

Возвращает весь файл документа частями до 4194304 байта (4 МБ). Я надеюсь, что файл может быть успешно загружен.

Текущее поведение

Но когда файл срезался до No.256, произошла ошибка. ErrorCode: 12007.ErrorMessage: диалоговое окно уже открыто из этого окна хоста, поэтому операция завершилась неудачно. errorImg

Шаги для воспроизведения или живой пример

ошибка произошла в функции getSlice

function uploadRun() {
    if (isCheckout) {
        $("#msg").empty();
        $('#uploadRun').addClass('disabled');
        $('#uploadCancel').addClass('disabled');
        $('#saveTemp').addClass('disabled');
    } else {
        $("#msg").empty();
        $('#footer-div .btn-primary').attr('disabled', true);
    }

    Office.context.document.getFileAsync(
        Office.FileType.Compressed,
        { },  
        function (result) {
            if (result.status == Office.AsyncResultStatus.Succeeded) {
                var myFile = result.value;
                var state = {
                    file: myFile,
                    counter: 0,
                    sliceCount: myFile.sliceCount,
                    fileName: "",
                    result: true,
                    code: "",
                    msg: ""
                };
                getSlice(state);
            } else {
                showMessage(JSMsg["OfficeAddin.msg.00102"], false);
            }
     });
}
function getSlice(state) {
    state.file.getSliceAsync(state.counter, function (result) {
        if (result.status == Office.AsyncResultStatus.Succeeded) {
            sendSlice(result.value, state);

        } else if (result.status == Office.AsyncResultStatus.Failed) {
            console.log(result);
            showMessage("sliceCounter: " + state.counter + ".ERROR happened. ErrorCode: " + result.error.code + ".ErrorMessage:" + result.error.message, false);
        }else {
            showMessage(JSMsg["OfficeAddin.msg.00102"], false);
        }
    });
}
...