Excel 加载项支持撤消行为。 这将保留 Excel JavaScript API 执行的作和用户在 Excel 中执行的作。 这些作将保存在单个用户的 撤消堆栈 中,允许用户在需要时回退其作。
撤消分组
Excel JavaScript API 还支持撤消分组。 这样,就可以将多个 API 调用分组到外接程序用户的单个可撤消作中。 例如,如果外接程序需要跨多个工作表进行多个不同的更新以响应单个用户命令,则可以将所有这些更新包装在一个组中。 这是通过 mergeUndoGroup 提供给 函数的 属性完成的 Excel.run 。
如果组中的 API 不提供撤消支持,则会 UndoNotSupported 引发错误,告知你无法对作进行分组。 加载项应正常处理此错误,并向用户显示一条合理的消息。
以下代码示例演示如何合并设置为 true的mergeUndoGroup多个作。
重要
确保所有分组 API 调用都支持撤消以避免错误。 有关详细信息 ,请参阅不支持的 API 。
await Excel.run({ mergeUndoGroup: true }, async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
let range = sheet.getRange("A1");
range.values = [["123"]];
await context.sync();
range = sheet.getRange("B2");
range.values = [["456"]];
await context.sync();
});
不支持的 API
大多数 Excel JavaScript API 都支持撤消作。 但是,请参阅下表,了解不支持撤消行为的 API 列表。
提示
如果在外接程序中调用不受支持的 API,则会从该 API 调用开始清除用户的撤消堆栈,并且用户无法撤消超过该点的作。
| API | 在 Excel web 版 中受支持 | 在 Excel on Windows 和 Excel on Mac 中受支持 | 注意 |
|---|---|---|---|
AllowEditRange.address |
否 | 否 | 无 |
AllowEditRange.delete |
否 | 否 | 无 |
AllowEditRange.pauseProtection |
否 | 否 | 无 |
AllowEditRange.setPassword |
否 | 否 | 无 |
AllowEditRange.title |
否 | 否 | 无 |
AllowEditRangeCollection.add |
否 | 否 | 无 |
AllowEditRangeCollection.pauseProtection |
否 | 否 | 无 |
Chart.categoryLabelLevel |
否 | 否 | 无 |
Chart.seriesNameLevel |
否 | 否 | 无 |
ChartPivotOptions.showAxisFieldButtons |
否 | 是 | 无 |
ChartPivotOptions.showLegendFieldButtons |
否 | 是 | 无 |
ChartPivotOptions.showReportFilterFieldButtons |
否 | 是 | 无 |
ChartPivotOptions.showValueFieldButtons |
否 | 是 | 无 |
ChartTrendlineLabel.formula |
否 | 是 | 无 |
DataConnectionCollection.refreshAll |
否 | 否 | 无 |
DocumentProperties.author |
否 | 是 | 无 |
DocumentProperties.category |
否 | 是 | 无 |
DocumentProperties.comments |
否 | 是 | 无 |
DocumentProperties.company |
否 | 是 | 无 |
DocumentProperties.keywords |
否 | 是 | 无 |
DocumentProperties.manager |
否 | 是 | 无 |
DocumentProperties.revisionNumber |
否 | 是 | 无 |
DocumentProperties.subject |
否 | 是 | 无 |
DocumentProperties.title |
否 | 是 | 无 |
LinkedWorkbook.refresh |
否 | 否 | 无 |
LinkedWorkbookCollection.refreshAll |
否 | 否 | 无 |
NamedItem.comment |
否 | 是 | 无 |
PivotTableStyle.delete |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
PivotTableStyle.duplicate |
否 | 是 | 无 |
PivotTableStyle.name |
否 | 是 | 无 |
PivotTableStyleCollection.add |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
PivotTableStyleCollection.setDefault |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
Query.delete |
否 | 是 | API 支持在 Windows 和 Mac 上的 Excel 中撤消作,但不支持重做。 |
Query.refresh |
否 | 是 | API 支持在 Windows 和 Mac 上撤消 Excel,但不支持重做。 |
QueryCollection.refreshAll |
否 | 是 | API 支持在 Windows 和 Mac 上撤消 Excel,但不支持重做。 |
Slicer.name |
否 | 是 | 无 |
Slicer.nameInFormula |
否 | 是 | 无 |
SlicerStyle.delete |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
SlicerStyle.duplicate |
否 | 是 | 无 |
SlicerStyle.name |
否 | 是 | 无 |
SlicerStyleCollection.add |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
SlicerStyleCollection.setDefault |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
Style.addIndent |
否 | 是 | 无 |
Style.autoIndent |
否 | 是 | 无 |
Style.formulaHidden |
否 | 是 | 无 |
Style.horizontalAlignment |
否 | 是 | 无 |
Style.includeAlignment |
否 | 是 | 无 |
Style.includeBorder |
否 | 是 | 无 |
Style.includeFont |
否 | 是 | 无 |
Style.includeNumber |
否 | 是 | 无 |
Style.includePatterns |
否 | 是 | 无 |
Style.includeProtection |
否 | 是 | 无 |
Style.indentLevel |
否 | 是 | 无 |
Style.locked |
否 | 是 | 无 |
Style.numberFormat |
否 | 是 | 无 |
Style.numberFormatLocal |
否 | 是 | 无 |
Style.orientation |
否 | 是 | 无 |
Style.readingOrder |
否 | 是 | 无 |
Style.shrinkToFit |
否 | 是 | 无 |
Style.textOrientation |
否 | 是 | 无 |
Style.verticalAlignment |
否 | 是 | 无 |
Style.wrapText |
否 | 是 | 无 |
TableStyle.delete |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
TableStyle.duplicate |
否 | 是 | 无 |
TableStyle.name |
否 | 是 | 无 |
TableStyleCollection.add |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
TableStyleCollection.setDefault |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
TimelineStyle.delete |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
TimelineStyle.duplicate |
否 | 是 | 无 |
TimelineStyle.name |
否 | 是 | 无 |
TimelineStyleCollection.add |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
TimelineStyleCollection.setDefault |
否 | 是 | API 不支持 在 Windows 和 Mac 上的 Excel 中共同创作撤消作。 |
Workbook.close |
否 | 否 | 无 |
Workbook.insertWorksheetsFromBase64 |
否 | 否 | 无 |
Workbook.save |
否 | 否 | 无 |
WorkbookProtection.protect |
否 | 否 | 无 |
WorkbookProtection.unprotect |
否 | 否 | 无 |
Worksheet.copy |
否 | 否 | 无 |
Worksheet.delete |
否 | 否 | 无 |
Worksheet.name |
是 | 否 | 无 |
Worksheet.standardWidth |
否 | 是 | 无 |
Worksheet.position |
是 | 否 | 无 |
Worksheet.visibility |
是 | 否 | 无 |
WorksheetCollection.addFromBase64 |
否 | 否 | 无 |
WorksheetProtection.pauseProtection |
否 | 否 | 无 |
WorksheetProtection.protect |
否 | 否 | 无 |
WorksheetProtection.resumeProtection |
否 | 否 | 无 |
WorksheetProtection.setPassword |
否 | 否 | 无 |
WorksheetProtection.unprotect |
否 | 否 | 无 |
WorksheetProtection.updateOptions |
否 | 否 | 无 |