You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中通过Excel DNA为Excel功能区添加自定义图片?

问题解答

1. 将Ribbon XML存储到单独文件

按以下步骤操作即可利用VS的XML语法检查:

  • 在Visual Studio项目中添加新的XML文件,命名为RibbonUI.xml(名称可自定义)。
  • 将原GetCustomUI方法中的XML内容复制到该文件中,替换C#风格注释//为XML注释<!-- -->,同时去掉字符串的@符号和引号。示例XML内容:
<customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui'>
    <ribbon>
        <!-- 这里放置你的功能区布局代码 -->
        <tabs>
            <tab id='CustomTab' label='我的自定义标签'>
                <group id='CustomGroup' label='自定义组'>
                    <button id='CustomBtn' label='自定义按钮' imageMso='FileNew' size='large'/>
                </group>
            </tab>
        </ribbon>
    </customUI>
  • 右键点击RibbonUI.xml文件,选择属性,将生成操作设置为嵌入的资源,确保文件被打包到程序集中。
  • 修改GetCustomUI方法,从嵌入资源中读取XML内容:
public override string GetCustomUI(string RibbonID)
{
    var assembly = System.Reflection.Assembly.GetExecutingAssembly();
    using (var stream = assembly.GetManifestResourceStream("你的项目命名空间.RibbonUI.xml"))
    using (var reader = new System.IO.StreamReader(stream))
    {
        return reader.ReadToEnd();
    }
}

注意:替换代码中的你的项目命名空间为实际项目命名空间(可在项目属性中查看),资源名称格式为命名空间.文件名。

2. 在Ribbon中加载自定义图片

无需依赖.dna文件,通过嵌入资源+回调方法即可实现静态加载:

  • 将自定义图片(如CustomIcon.png)添加到项目中,右键设置文件属性,将生成操作改为嵌入的资源。
  • 在RibbonUI.xml中,将按钮的imageMso替换为getImage属性,指定回调方法名:
<button id='CustomBtn' label='带自定义图标的按钮' getImage='GetCustomButtonImage' size='large'/>
  • 在你的Ribbon控制器类中实现该回调方法,从嵌入资源读取图片并返回:
using System.Drawing;
using System.Reflection;
using Microsoft.Office.Core;

public Bitmap GetCustomButtonImage(IRibbonControl control)
{
    var assembly = Assembly.GetExecutingAssembly();
    // 替换为实际的资源名称:命名空间.图片文件名
    var resourceName = "你的项目命名空间.CustomIcon.png";
    using (var stream = assembly.GetManifestResourceStream(resourceName))
    {
        return new Bitmap(stream);
    }
}

提示:若需要多个自定义图标,可通过control.Id判断当前按钮,返回对应图片;图片建议使用16x16(小尺寸)或32x32(大尺寸)的PNG格式,确保在Excel中显示清晰。

内容的提问来源于stack exchange,提问作者RobBaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:47:51