ExcelJs: рабочая книга закрывается автоматически после вызова Office.context.document.getFileAsync - PullRequest
0 голосов
/ 28 ноября 2018

Ниже приведена одна из функциональных возможностей нашего продукта a.Как только пользователь нажимает кнопку «обновить», читает Excel в байтовом формате и отправляет его на сервер (сервер приложений Java, который сохраняет этот байт в базу данных)

b.После получения успешного ответа Excel закрывается автоматически.Я не нашел никаких исключений. Это происходит только в настольной версии, но нормально работает в онлайн-версии

Ниже приведена функция, которая читает Excel и выполняет API-вызов на сервер

function saveInput(){
    Office.context.document.getFileAsync("compressed",
    { sliceSize: 100000 },
    function (result) {
        updateStatus(result.status);
        if (result.status == Office.AsyncResultStatus.Succeeded) {

            // Get the File object from the result.
            var myFile = result.value;
            var state = {
                file: myFile,
                counter: 0,
                sliceCount: myFile.sliceCount
            };

            //updateStatus("Getting file of " + myFile.size + " bytes");
            getSlice(state);
        }
        else {
          //  updateStatus("Please re-open the add-on and save the input");
        }
    });
}

function getSlice(state) {
    state.file.getSliceAsync(state.counter, function (result) {
        if (result.status == Office.AsyncResultStatus.Succeeded) {
            //updateStatus("Sending piece " + (state.counter + 1) + " of " + state.sliceCount);
            sendSlice(result.value, state);
        }
        else {
            updateStatus(result.status);
        }
        state.file.closeAsync();
    });
}

function sendSlice(slice, state) {
    var data = slice.data;
    // If the slice contains data, create an HTTP request.
    if (data) {

        var selectedCompany = $('#company-container').val();
        var selectedScenario = $('#forecast-container').val();

        var selectedUICompany = $('#company-container').data(selectedCompany);
        var supportUIScenarios = $('#forecast-container').data(selectedScenario);

        var sessionId = $('body').data('sessionId');
        var companyId = selectedUICompany.uiCompany.dbId;
        var companyVersion = selectedUICompany.uiCompany.version;
        var companyUniqueId = selectedUICompany.uiCompany.companyId;
        var companyDivisionName = selectedUICompany.uiCompany.uiCompanyDivisions[0].name;
        var serviceProviderId =  selectedUICompany.serviceProviderId;

        var scenarioId = supportUIScenarios.docId;

        var response=$('body').data('login-response');
        var uiUser=response.uiUser;
        var userId=uiUser.dbId;
        var emailAddress = uiUser.emailAddress;

        var dataR = {
            'userId' : userId,
            'emailAddress' : 'emailAddress',
            'sessionId' : sessionId,
            'companyId' : companyId,
            'companyUniqueId' : companyUniqueId,
            'companyVersion' : companyVersion,
            'companyDivisionName' : companyDivisionName,
            'serviceProviderId' : serviceProviderId,
            'scenarioId' : scenarioId,
            'excelStream' : data
        };      
        $.ajax({
            url: "https://example.com?&operationId=UPDATE_EXCEL_INPUT",
            type: "POST",
            crossDomain: true,
            crossOrigin: true,
            contentType: "application/json",
            dataType: "json",
            data: JSON.stringify(dataR),
            headers: {
                'sessionId': sessionId
            },
            success: function (response, status, xhr) {
                var status = response.status;
                if(status != 'success')
                {
                 updateStatus(response.msg);
                }else{
                 updateStatus("Update successful");
                }
            },
            error: function (request, error) {
               updateStatus(error);
            }
        });       
    }
}
* 1007.*Какие-либо предложения?Заранее спасибо.
...