@SudhiRamamurthy какие-нибудь новости по этому поводу?
стройке Excel сразу после закрытия диалога, созданного с помощью displayDialogAsync, нельзя редактировать ячейки на листе. Если вы щелкнете где-нибудь за пределами рабочего листа (лента, панель задач и т. Д.), Сверните / разверните Excel или дважды щелкните ячейку, то вы сможете снова редактировать. Если вы прокручиваете, когда не можете редактировать, все в Excel становится «не кликабельным».
Кроме того, я заметил, что строка заголовка (где отображается название документа) остается серой, пока вы не щелкаете за пределами листа, как будто Excel не имеет фокуса.
Мне удалось воспроизвести это с помощью базового шаблона Excel-надстройки из Visual Studio:
В манифесте я добавил кнопку на ленту (чтобы открыть диалог):
<Control xsi:type="Button" id="DDR.SettingsButton">
<Label resid="DDR.SettingsButton.Label" />
<Supertip>
<!-- ToolTip title. resid must point to a ShortString resource. -->
<Title resid="DDR.SettingsButton.Title" />
<!-- ToolTip description. resid must point to a LongString resource. -->
<Description resid="DDR.SettingsButton.Text" />
</Supertip>
<Icon>
<bt:Image size="16" resid="Contoso.tpicon_16x16" />
<bt:Image size="32" resid="Contoso.tpicon_32x32" />
<bt:Image size="80" resid="Contoso.tpicon_80x80" />
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>openDialog</FunctionName>
</Action>
</Control>
Затем, функция для файла функций:
function openDialog(event) {
Office.context.ui.displayDialogAsync(window.location.origin + "/functions/Dialog.html", { height: 50, width: 50 }, function dialogCallback(asyncResult) {
if (asyncResult.status !== "failed") {
var dialog = asyncResult.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, function (args) {
dialog.close();
event.completed();
});
dialog.addEventHandler(Office.EventType.DialogEventReceived, function (arg) {
switch (arg.error) {
case 12006:
event.completed();
break;
default:
break;
}
});
}
});
}
Затем я создал очень простой диалог:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.1.min.js"></script>
<script>
Office.initialize = function () {
$('#buttonClose').click(close);
};
function close() {
Office.context.ui.messageParent("close");
}
</script>
</head>
<body>
<Button id="buttonClose">Close</Button>
</body>
</html>
Я испытал очень похожее поведение, которое было вызвано (теперь исправлено) iframe, который я встраивал в панель задач (оригинальный вопрос здесь:Невозможно редактировать ячейки после setSelectedDataAsync в Excel).
Есть ли обходной путь / исправить это?
Спасибо!