【问题标题】:Missing method in JavaScript API for Excel: copy a sheetJavaScript API for Excel 中缺少方法:复制工作表
【发布时间】:2015-11-11 08:19:43
【问题描述】:

由于无法取消加载项所做的更改,我们需要为用户提供备份选项。

当前版本的 JavaScript API for Excel 没有复制工作表及其数据和格式的方法。

有人知道添加这种方法的任何解决方法或计划吗?

【问题讨论】:

    标签: excel office-addins office365-apps office-js


    【解决方案1】:

    目前确实没有简单的方法来复制工作表,因此请随时在Office Extensibility Platform's UserVoice 上请求它。虽然将来可能会出现这样的 API,但您可以同时使用 worksheetCollection.add() 添加新工作表,使用 worksheet.getUsedRange() 方法获取工作表的使用范围并将其值复制到另一个工作表。

    您的代码将如下所示:

    function duplicateSheet(worksheetName) {
        Excel.run(function(ctx) {
            var worksheet = ctx.workbook.worksheets.getItem(worksheetName);
            var range = worksheet.getUsedRange();
            range.load("values", "address");
    
            var newWorksheet = ctx.workbook.worksheets.add(worksheetName + " - Backup");
            return ctx.sync().then(function() {
                var newAddress = range.address.substring(range.address.indexof("!") + 1);
                newWorksheet.getRange(newAddress).values = range.values;              
            }).then(ctx.sync);
        });
    }
    

    让我知道你的效果如何。

    Gabriel Royer - Microsoft Office 可扩展性团队的开发人员

    【讨论】:

    • 感谢您的建议,@GabRoyer,我们已经使用此解决方案来备份值和公式。我们已将建议添加到 UserVoice。
    • Office 可扩展性团队计划在线支持 Excel 中的新 JavaScript API 时能否告知我们?
    • 我很确定这些 API 实际上从今天(或昨天)开始在 Excel Online 中可用!可能需要一些时间才能在所有地方推出,但它们应该很快就会提供给您。
    • 很高兴看到新的 API 工作,但是,以前版本的 API (Office.context.document.addHandlerAsync) 今天停止工作。当我们尝试连接到 Office.EventType.DocumentSelectionChanged 事件时,结果总是“失败”并且我们收到消息“发生内部错误”。您还可以在 API 教程(内容)示例加载项中看到此问题:store.office.com/…
    • 以下线程跟踪问题:stackoverflow.com/questions/33542902/…。我们应该很快就会在这个线程上发布更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 2017-09-26
    相关资源
    最近更新 更多