weixin_45840746 2024-02-26 20:23 采纳率: 35.6%
浏览 12
已结题

c#:vsto,powerpoint的外接程序中换主题颜色

我有一个自定义的主题颜色的xml文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a:clrScheme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="自定义 9"><a:dk1><a:srgbClr val="000000"/></a:dk1><a:lt1><a:srgbClr val="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="44546A"/></a:dk2><a:lt2><a:srgbClr val="E7E6E6"/></a:lt2><a:accent1><a:srgbClr val="003BFF"/></a:accent1><a:accent2><a:srgbClr val="061D50"/></a:accent2><a:accent3><a:srgbClr val="00AC6D"/></a:accent3><a:accent4><a:srgbClr val="5F63F3"/></a:accent4><a:accent5><a:srgbClr val="757B83"/></a:accent5><a:accent6><a:srgbClr val="0087FF"/></a:accent6><a:hlink><a:srgbClr val="0641FF"/></a:hlink><a:folHlink><a:srgbClr val="757B83"/></a:folHlink></a:clrScheme>

这个xml文件也是从powerpoin中导出来的,我现在该如何将这个xml文件替换掉当前主题的主题颜色哎

  • 写回答

15条回答 默认 最新

  • bug菌¹ Java领域优质创作者 2024-02-26 23:07
    关注

    该回答引用ChatGPT,望对题主有所帮助/启发;若有帮助,还望采纳🤝🤝🤝


    在使用VSTO开发的PowerPoint外接程序中,你可以使用C#代码将自定义的主题颜色XML文件替换掉当前主题的主题颜色。下面是一个示例代码:

    using System;
    using System.IO;
    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Presentation;
    
    public void ReplaceThemeColors(string filePath, string themeColorsFilePath)
    {
        using (PresentationDocument presentationDoc = PresentationDocument.Open(filePath, true))
        {
            PresentationPart presentationPart = presentationDoc.PresentationPart;
            ThemePart themePart = presentationPart.ThemePart;
    
            // 将自定义主题颜色XML文件的内容读取到一个字符串中
            string themeColorsXml;
            using (StreamReader sr = new StreamReader(themeColorsFilePath))
            {
                themeColorsXml = sr.ReadToEnd();
            }
    
            // 将当前主题颜色替换为自定义的主题颜色XML
            themePart.Theme.ReplaceChild(new ThemeColors(new A.ColorScheme(themeColorsXml)), themePart.Theme.ThemeElements.GetFirstChild<ThemeColors>());
    
            // 保存修改后的主题
            themePart.Theme.Save();
        }
    }
    

    要使用此方法,你需要包含以下命名空间:

    using System.IO;
    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Presentation;
    

    然后,通过调用ReplaceThemeColors方法,并传入PowerPoint文件的路径和自定义主题颜色XML文件的路径,即可将当前主题颜色替换为自定义主题颜色。

    请注意,这个示例代码假设你已经安装了DocumentFormat.OpenXml包,并且已经引用了Open XML SDK的相关程序集。如果没有安装,请使用NuGet包管理器来安装DocumentFormat.OpenXmlWindowsBase。另外,为了避免出现异常,请确保传入的文件路径和文件都是存在的。

    希望这能帮助到你!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月28日
  • 创建了问题 2月26日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd