Функциональность сохранения в надстройке Excel с использованием Office Js и ReactJS - PullRequest
3 голосов
/ 28 мая 2020

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

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

Пример кода:

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 сохраняет книгу в постоянное хранилище. Метод сохранения принимает единственный необязательный параметр saveBehavior, который может принимать одно из следующих значений:

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

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

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

1 Ответ

1 голос
/ 28 мая 2020

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...