weixin_45840746 2024-02-26 20:23 采纳率: 34.9%
浏览 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 有没有人会打学生成绩管理系统呀
  • ¥15 在使用Fiddler和夜神模拟器抓包的时候一直出现443该怎么办啊QAQ搜了好几个笔记都没有解决
  • ¥15 3x7的二维数组A、B、C,A中的任意1个数组元素与B的任意1个数组元素、同时又与C的任意1个数组元素比较,把不同位置出现相同数的比较称为无意义,反之称为有意义,把有意义的比较打印输出。
  • ¥20 预测模型怎么处理原始数据(随机森林)
  • ¥20 请问discuz3.5如何实现插入ckplayer全能播放器功能呢?
  • ¥15 thingsboard代码编译出错误
  • ¥15 博途v18仿真报错怎么解决
  • ¥15 欧姆龙plc枕式包装机 ST编程
  • ¥15 为啥快手广告联盟的广告这么难出来
  • ¥15 k8s集群重启后,kubelet一直报systemctl restart kubelet.service "Failed to delete cgroup paths"