【问题标题】:Openxml 2.0 xml processingOpenxml 2.0 xml处理
【发布时间】:2012-03-12 13:00:15
【问题描述】:

我有一个关于 openxml sdk 的非常基本的问题。我要处理pptx文档。

在我来自 slideMaster1.xml 的 c# 代码中,我想获取节点类型为 p:cNvPr 的每个 XMLNode 的列表,因为我想将它们的值存储在字符串列表中。

我该怎么做?

【问题讨论】:

    标签: c# openxml presentationml


    【解决方案1】:

    佐尔坦, “p:cNvPr”节点是指定非可视画布属性的非可视绘图属性。有关详细信息,请参阅MSDN documentation

    我编写了一个小型 Windows 窗体应用程序,它将打开一个 power point 并使用 sdk 显示 Master 中所有布局的所有非可视绘图属性的名称属性。请参阅下面的屏幕截图和link for zip of the Solution

    代码基本上做了以下几点:

    foreach (var slideMasterPart in PresentationPart.SlideMasterParts)
    {
        foreach (var layouts in slideMasterPart.SlideLayoutParts)
        {
        get each of the layouts.SlideLayout.CommonSlideData.ShapeTree.Descendants<NonVisualDrawingProperties>();
                    and put the name attribute to the grid.
        }
    }
    

    【讨论】:

      【解决方案2】:

      不确定,但我认为 LinqToXml 可以在没有 openxml 的情况下处理。

      string[] values = XElement.Load("slideMaster1.xml")
                             .Descendants("p:cNvPr")
                             .Select(x => (string)x)
                             .ToArray();
      

      它可能会在p: 上咳嗽,因为我不确定它会如何处理命名空间。如果你提供你的 xml 样本,我可以测试它。

      【讨论】:

      • 我不想自己解压缩 pptx,因为 openxml 会为我解压(我知道,这对我来说可能听起来很愚蠢),这就是为什么我更愿意使用 sdk 来解压
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      相关资源
      最近更新 更多