Функциональность сохранения в надстройке Excel с помощью OfficeJs и ReactJS

Предпосылки: я разрабатываю надстройку Excel с использованием библиотеки OfficeJS. Надстройка использует компоненты ReactJS и пользовательский интерфейс Office Fabric. Надстройка успешно создана, и с помощью библиотеки OfficeJS мы можем перенести выбор пользователя на лист Excel.

Проблема: проблема в том, что я хочу получить событие в OfficeJS для сохранения листа с помощью встроенных возможностей Excel, т. е. после того, как пользователь нажмет кнопку «Сохранить», появится диалоговое окно «Сохранить» (в соответствии с исходным поведением в Excel). ) и на этом я хочу вызвать свои бизнес-правила ReactJS (некоторые функции). Для этого я хочу использовать событие Save для того же самого в OfficeJS, которое должно запускаться автоматически.

Пример кода:

Office.initialize = () => {
    Excel.run(function (context) {
        var sheet = context.workbook.worksheets.getItem("Sheet1");             
        context.workbook.load(["save"]);                                                  
        context.sync().then(() => {
        context.workbook.save(Excel.SaveBehavior.prompt);
        //OR
        context.workbook.save(Excel.SaveBehavior.save);
        });
    }).catch(function(error) {
        console.log(error.debugInfo);
    });
}

Исследование: две вышеуказанные функции, которые я пробовал, взяты из Документация Microsoft, где он упоминается как:

Workbook.save сохраняет книгу в постоянное хранилище. Метод save принимает единственный необязательный параметр saveBehavior, который может принимать одно из следующих значений:

Excel.SaveBehavior.save (по умолчанию): файл сохраняется без запроса пользователю указать имя файла и место сохранения. Если файл ранее не сохранялся, он сохраняется в папке по умолчанию. Если файл был сохранен ранее, он сохраняется в том же месте. Excel.SaveBehavior.prompt: Если файл не был сохранен ранее, пользователю будет предложено указать имя файла и место сохранения. Если файл был сохранен ранее, он будет сохранен в том же месте, и пользователю не будет предлагаться.

Конфигурации системы: я использую Windows 10, Excel 2016 для ПК и версию Office 365 Online. Я использую IE-10 и Google Chrome для онлайн-версии Excel. Кроме того, я проверил то же самое, используя Windows-7 и Excel-2016 и те же браузеры.

Сообщите мне, может ли быть достигнута вышеуказанная функциональность?


person Rahul Tripathi    schedule 28.05.2020    source источник


Ответы (1)


К сожалению, API Office JS Excel в настоящее время не поддерживает событие onSaved. Одна из причин заключалась в том, что в Excel есть функция автосохранения, которая часто запускает действие сохранения. Поэтому мы беспокоимся о том, что предоставление события onSaved может вызвать слишком много уведомлений о событиях для клиентов.

Но я бы посоветовал вам отправить запрос и проголосовать за него на uservoice

person Raymond Lu    schedule 28.05.2020
comment
Спасибо за подтверждение. Однако есть ли какие-либо планы на будущее по реализации функции сохранения? - person Rahul Tripathi; 28.05.2020
comment
Это у нас в очереди, но нам нужно оправдание. какое у вас имя надстройки и сколько активных пользователей ежемесячно? - person Raymond Lu; 28.05.2020