当前位置: 首页 > 知识库问答 >
问题:

Excel Office加载项API工作表保护密码

何高歌
2023-03-14

我有一个与Excel工作表保护有关的问题...

上下文是,我需要有不同的工作表可供不同的用户组编辑,但所有组必须至少看到所有工作表,例如,usergroup1可以编辑工作表2和工作表3以及工作表1的一部分,usergroup2只能编辑工作表1。

我可以相应地设置FormatProtection(range.Format.Protection.Locked=false;)和WorksheetProtection(Worksheet.Protection.Protection();)来启用此功能,但我似乎没有能力通过API针对工作表保护设置密码?例如,这意味着任一组都可以简单地单击“审阅”功能区中的“取消工作表保护”选项,并编辑我不希望他们这样做的工作表。

我已经尝试过下面的文档,但不幸的是没有任何效果。

  • http://dev.office.com/reference/add-ins/excel/worksheetprotection
  • https://github.com/officedev/office-js-docs/blob/master/reference/excel/worksheetprotection.md

作为一个例子,下面是我想要完成的一个函数:

function CopyWorksheet() {

        var newAddress;

        Excel.run(function (ctx) {

            var worksheet = ctx.workbook.worksheets.getActiveWorksheet();
            var range = worksheet.getUsedRange();
            range.load();

            // insert new worksheet
            var newWorksheetName = "Copied_Sheet";              
            var newWorksheet = ctx.workbook.worksheets.add(newWorksheetName);

            return ctx.sync().then(function () {

                // copy the old values to the new worksheet
                newAddress = range.address.substring(range.address.indexOf("!") + 1);
                newWorksheet.getRange(newAddress).values = range.values;
                newWorksheet.getRange(newAddress).formulas = range.formulas;
                newWorksheet.getRange(newAddress).text = range.text;

                // protect both worksheets
                worksheet.protection.protect();
                newWorksheet.protection.protect();

                // requirement here to set a password so that no one can 
                // edit the worksheets by selecting 'Unprotect Sheet' in excel
                // ...
            })
            .then(ctx.sync)})
            .catch(function(error) {
                    console.log("Error: " + error);                     
            });
        }

目前,我正在使用Excel 2016(桌面版)。这是可能实现的,还是我错过了一些可以实现相同结果的功能

谢谢你的帮助。

共有1个答案

劳鹏云
2023-03-14

我们的API中没有密码保护。您可以保护工作表以避免随意编辑,但不能使用密码保护。原因是密码保护不是所有端点都可用(IIRC,Excel Online有问题)。

如果您想在UserVoice上提交一个建议bug,您可以看看我们是否考虑将密码保护作为一个仅限于桌面的API来做。到目前为止,我们一直避免在Excel中进行这些操作,但我知道Word已经做了一些“WordApidesktop”API。因此,根据它对您(和其他人)的场景的阻碍程度,这可能是一种选择。在这种情况下,您可以在桌面上设置密码保护和取消保护,但无法在网上执行这些操作。

 类似资料:
  • OAuth 2.0 资源所有者密码授权 允许一个客户端发送用户名和密码到令牌服务并获得一个表示该用户访问令牌。 (OAuth 2.0) 规范 建议仅对“受信任”的应用程序使用资源所有者密码授权。一般来说,当你想要验证一个用户并请求访问令牌的时候,使用交互式 OpenID Connect 流通常会更好。 不过,这个授权类型允许我们在 IdentityServer 快速入门中引入 用户 的概念,这是我

  • 问题内容: 我正在使用Apache POI生成Excel文件(2007)。我要保护的是工作表,但是启用了一些选项。选项是指您尝试保护Excel应用程序中的工作表时的复选框列表(在标签“允许此工作表的所有用户访问:”下)。具体来说,我想启用“选择锁定/未锁定的单元格”,“设置格式列”,“排序”和“允许自动过滤”。非常感谢你!:D 问题答案: 在Apache POI 3.9中,可以通过启用锁定功能来使

  • 我正在使用Apache POI生成一个Excel文件(2007)。我想要的是保护工作表,但启用了一些选项。我所说的选项是指试图保护Excel应用程序中的工作表时的复选框列表(在标签“允许此工作表的所有用户:”下)。具体地说,我希望启用“选择锁定/解锁单元格”、“格式化列”、“排序”和“允许自动筛选”。非常感谢!:d

  • protection([string $password]); 示例一 $config = ['path' => './tests']; ​ $fileObject = new \Vtiful\Kernel\Excel($config); $fileObject = $fileObject->fileName('tutorial.xlsx'); ​ $filePath = $fileObject

  • 我想保护Spring Boot API,使它只对具有有效API密钥和秘密的客户机是可访问的。但是,由于所有数据都是匿名的,程序内部没有身份验证(使用用户名和密码的标准登录)。我试图实现的只是所有API请求都可以仅用于特定的第三方前端。

  • 我试图保护Spring BootAPIendpoint。我希望只传递api密钥和秘密作为头的一部分来调用api。我尝试了这个链接中发布的代码。但是在头中使用授权调用api时拒绝访问。使用API key和secret保护Spring Boot API我想知道我应该作为头部的一部分传递什么,这样我就可以从API获得成功的响应。我做了以下步骤:我在application.properties中添加了以下