WPS加载项深入开发代码ribbon解析

ribbon是什么
Ribbon是一种以面板及标签页为架构的用户界面,原先出现在Microsoft Office 2007后续版本的Word、Excel和PowerPoint等组件中,后来也被运用到Windows 7的一些附加组件等其它软件中,如画图和写字板,以及Windows 8中的资源管理器。
WPS利用ribbon做的是界面的定义,就是「标签选项卡」的这种界面。WPS加载项作为可以对WPS界面做自定义的一种扩展开发方式,也遵循ribbon的规范。以通过wpsjs创建的一个纯净的Demo为例,在Demo的根目录下有三个文件,作用如下说明:

index.html:入口文件,WPS启动后加载WPS加载项,就以这个文件为入口
main.js:index.html包含的,负责核心js的加载,开发者可以自主添加其他js文件
ribbon.xml:自定义功能区定义文件,遵循ribbon的CustomUI规范。
在ribbon.xml中,有几个常用的控件,之下用代码做个说明:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnWPSWorkTabLoad">
    <ribbon startFromScratch="false">        
        <tabs>
            <!-- OA菜单开启显隐处理, insertBeforeMso表示要在WPS自身某个tab之前显示,insertAfterMso表示在某个WPS自身tab之后显示-->
            <!--在如下的tab定义中,id是WPSWorkExtTab,显示标签是OA辅助,有控制显隐的事件设置getVisible,设置在「开始」(TabHome)页签之前-->
            <tab id="WPSWorkExtTab" label="OA辅助" getVisible="OnGetVisible" insertBeforeMso="TabHome">
                <group id="grpWPSClound" label="WPS云文档相关功能" getVisible="OnGetVisible">
                    <box id="boxBoxCloud1" boxStyle="horizontal" visible="true">
                        <button id="btnOpenWPSYUN" label="WPS云文档" getLabel="OnGetLabel" onAction="OnAction" getEnabled="OnGetEnabled" getVisible="OnGetVisible" getImage="GetImage" size="large"/>
                    </box>
                    <box id="boxBoxCloud1" boxStyle="horizontal" visible="true">
                        <button id="btnOpenLocalWPSYUN" label="导入文件" getLabel="OnGetLabel" onAction="OnAction" getEnabled="OnGetEnabled" getVisible="OnGetVisible" getImage="GetImage" size="large"/>
                    </box>
                    <separator id="sepWPSClound"/>
                </group>
                <group id="grpWPSWork" label="OA助手文档操作功能组" getVisible="OnGetVisible">
                    <button id="btnSaveToServer" label="保存到OA" onAction="OnAction" getEnabled="OnGetEnabled" getImage="GetImage" size="large"/>
                    <button id="btnSaveAsFile" label="保存本地" getLabel="OnGetLabel" onAction="OnAction" getEnabled="OnGetEnabled" getVisible="OnGetVisible" getImage="GetImage" size="large" />
                    <box id="boxWPSWorkEx" boxStyle="vertical" visible="true">
                        <button id="btnChangeToPDF" label="转PDF上传" getLabel="OnGetLabel" onAction="OnAction" getEnabled="OnGetEnabled" getVisible="OnGetVisible" getImage="GetImage" size="large"/>
                        <button id="btnChangeToUOT" label="转UOT上传" getLabel="OnGetLabel" onAction="OnAction" getEnabled="OnGetEnabled" getVisible="OnGetVisible" getImage="GetImage" size="large"/>
                        <button id="btnChangeToOFD" label="转OFD上传" getLabel="OnGetLabel" onAction="OnAction" getEnabled="OnGetEnabled" getVisible="OnGetVisible" getImage="GetImage" size="large"/>
                    </box>
                    <separator id="sepWPSWork" getVisible="OnGetVisible" />
                </group>
                
            </tab>
            <!-- 在这里可以定义WPS自身的tab页签的一些行为,页签的getEnabled和getVisible等效,无onAction事件-->
            <!-- 全集可以去open.wps.cn/docs/office的idMso列表查询-->
            <!--WPS自身功能常见tab的idMso如下-->
            <!--开始-->
            <tab idMso="TabHome" getEnabled="OnGetEnabled"/>
            <!--插入-->
            <tab idMso="TabInsert" getEnabled="OnGetEnabled"/>
            <!--页面布局-->
            <tab idMso="TabPageLayoutWord" getEnabled="OnGetEnabled"/>
            <!--引用-->
            <tab idMso="TabReferences" getEnabled="OnGetEnabled"/>
            <!--审阅-->
            <tab idMso="TabReviewWord" getEnabled="OnGetEnabled"/>
            <!--视图-->
            <tab idMso="TabView" getEnabled="OnGetEnabled"/>
            <!--开发工具-->
            <tab idMso="TabDeveloper" getEnabled="OnGetEnabled"/>
        </tabs>
    </ribbon>
    <commands>
        <!-- idMso支持getEnabled和onAction,不支持visible属性和事件-->
        <!-- 文档复制和剪切控制-->
        <command idMso="Copy" getEnabled="OnGetEnabled" />
        <command idMso="Cut" getEnabled="OnGetEnabled" />
        <!-- 文档保存和另存控制-->
        <command idMso="FileSave" getEnabled="OnGetEnabled" onAction="OnAction"/>
        <command idMso="SaveAll" getEnabled="OnGetEnabled" />
        <command idMso="FileSaveAsMenu" getEnabled="OnGetEnabled" onAction="OnAction"/>
        <command idMso="FileSaveAs" getEnabled="OnGetEnabled" onAction="OnAction"/>
        <command idMso="FileSaveAsPicture" getEnabled="OnGetEnabled" />
        <command idMso="SaveAsPicture" getEnabled="OnGetEnabled" />
        <command idMso="FileMenuSendMail" getEnabled="OnGetEnabled" />
        <!-- 输出PDF控制-->
        <command idMso="SaveAsPDF" getEnabled="OnGetEnabled"/>
        <command idMso="FileSaveAsPDF" getEnabled="OnGetEnabled"/>
        <command idMso="ExportToPDF" getEnabled="OnGetEnabled"/>
        <command idMso="FileSaveAsPdfOrXps" getEnabled="OnGetEnabled"/>
        <!-- 输出OFD控制-->
        <command idMso="SaveAsOfd" getEnabled="OnGetEnabled"/>
        <command idMso="FileSaveAsOfd" getEnabled="OnGetEnabled"/>
        <!--文档打印控制-->
        <command idMso="FilePrint" getEnabled="OnGetEnabled"/>
        <command idMso="FilePrintMenu" getEnabled="OnGetEnabled"/>
        <command idMso="FilePrintPreview" getEnabled="OnGetEnabled"/>
        <!--文档修订控制-->
        <command idMso="ReviewTrackChangesMenu" getEnabled="OnGetEnabled"/>
        <command idMso="ReviewRejectChangeMenu" getEnabled="OnGetEnabled"/>
        <command idMso="ReviewAcceptChangeMenu" getEnabled="OnGetEnabled"/>
        <!--文档新建控制-->
        <command idMso="FileNewMenu" getEnabled="OnGetEnabled" onAction="OnAction"/>
        <command idMso="FileNew" getEnabled="OnGetEnabled" onAction="OnAction"/>
        <command idMso="WindowNew" getEnabled="OnGetEnabled" onAction="OnAction"/>
        <command idMso="FileNewBlankDocument" getEnabled="OnGetEnabled" onAction="OnAction"/>
    </commands>
    <contextMenus>
        <contextMenu idMso="ContextMenuText">
            <menu id="Menu_ContextMenuText" label="测试右键" visible="true">
                <button id="ShowAlert_ContextMenuText" label="弹出一个警告框" onAction="OnAction" getImage="GetImage" visible="true"/>
            </menu>
        </contextMenu>
    </contextMenus>
</customUI>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 要开发 Office 项,首先需要满足一些系统需求,包括: - 安装 Office 开发人员工具,可以在 Office 安装包中找到,也可以从 Microsoft 官网下。 - 安装 Visual Studio,并使用其中的模板创建 Office 项目。 - 配置开发环境,包括安装所需的 .NET Framework 版本和其他依赖项。 一旦满足了这些系统需求,就可以开始开发 Office 项了。下面是一些常见步骤: 1. 选择要开发的 Office 应用程序,例如 Word、Excel 或 PowerPoint。 2. 创建 Office 项目,并选择要使用的项类型。常见的项类型有「功能区」和「任务窗格」。 3. 在项目中添代码,实现项的目的。这可能包括: - 使用 Office 对象模型(OM)访问和操作 Office 文档。 - 处理用户在项中的输入。 - 与 Office 应用程序交互,例如显示对话框或通知用户操作完成。 4. 调试和测试项,确保其正常工作。 5. 发布项,让其他用户可以安装和使用它。 希望这些信息能帮助你开始 Office 项的开 ### 回答2: Office项是一种可以在Office应用程序中添自定义功能和功能的扩展。要开发Office项,可以按照以下步骤进行: 1. 开发环境准备:首先,需要安装并设置开发环境。这包括安装Visual Studio工具和Office开发工具(VSTO)插件。 2. 创建项目:在Visual Studio中,可以选择使用C#或VB.NET来创建一个新的Office项项目。选择适当的Office应用程序(如Word、Excel、PowerPoint等),以及项类型(如Ribbon、自定义任务窗格等)。 3. 设计界面:根据项的类型,可以在Visual Studio中设计项的用户界面。例如,可以设计一个自定义的Ribbon界面,包含自定义按钮和菜单项。 4. 编写代码:根据项的需求,编写相应的逻辑代码。可以使用提供的Office开发工具库和API,来与Office应用程序进行交互。例如,可以通过代码方式,读取和修改文档内容,执行各种操作等。 5. 调试和测试:在开发过程中,可以使用Visual Studio提供的调试工具来进行项的调试。可以模拟各种场景,测试项在不同情况下的功能和性能。 6. 部署和发布:完成开发和测试后,可以将项打包为一个安装程序或部署包。根据需要,可以将项发布到Office应用商店、共享文件夹等位置,以供其他用户安装和使用。 7. 更新和维护:随着Office版本的更新和用户需求的变化,可能需要对项进行更新和维护。可以根据需要,调整代码和功能,发布新的版本以提供更好的用户体验。 总之,开发Office项需要一定的开发经验和技能,同时也需要熟悉Office应用程序的特性和API。通过合理的设计和编码,可以为Office用户提供更丰富和定制化的功能扩展。 ### 回答3: Office 项是一种可以在 Office 软件中扩展功能的开发工具。下面是开发 Office 项的一些基本步骤: 1. 确定所需的 Office 软件版本:根据所需功能和用户群体,确定要在哪些 Office 软件中开发项,比如 Word、Excel 或 PowerPoint。 2. 选择开发平台和工具:根据项的需求和个人技能,选择合适的开发平台和工具。常用的开发平台包括 Office 插件模型 (Office Add-in Model)、Visual Studio Tools for Office (VSTO)、JavaScript API for Office 等。 3. 设计项:根据功能需求,设计项的用户界面和交互逻辑。可以使用 HTML、CSS 和 JavaScript 开发用户界面,也可以使用 .NET 平台开发 C# 或 VB.NET 代码来与 Office 应用程序交互。 4. 编码实现:使用所选的开发工具编写项的代码。使用 Office 插件模型时,可以使用各种编程语言,如 JavaScript、TypeScript、C# 等。 5. 测试和调试:在 Office 软件中和测试项。确保项能正常运行,与 Office 应用程序的协作无误。使用开发工具提供的调试功能进行代码调试,修复存在的问题。 6. 发布和分发:将项打包成适合 Office 软件版本的安装包,并发布到适当的分发渠道,如 Office Store 或内部的企业应用商店。 7. 更新和维护:根据用户反馈和需求变化,及时更新和维护项。修复潜在的问题,添新功能以提升用户体验。 通过以上步骤,可以开发出功能丰富且与 Office 软件无缝协作的项,为用户提供更便捷和高效的办公体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曉儂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值