如何从word XML中的w:sdtContent获取Paragraph样式

时间:2014-06-09 14:03:20

标签: xml ms-word ms-office office-interop word-vba

我需要获得已分配标签值(COntentControl)的段落样式。 现在我已将contentControl(即)Tag值添加到单词中的段落,我可以获取已为其分配标记值的相应段落的文本,

case "DocumentFormat.OpenXml.Wordprocessing.SdtBlock":
    SdtBlock p1 = (SdtBlock)DocElement;
    string content1 = p1.InnerText;

    if (!string.IsNullOrEmpty(content1))
        dt.Rows.Add(content1);
    break;

并在表中添加para,但我需要获得para的样式,当我以XML格式保存word文档时,我得到这些代码

    <w:sdtContent>
        <w:p w:rsidR="00D57D79" w:rsidRDefault="00176023">
            <w:pPr>
                <w:pStyle w:val="Heading1"/>
                <w:rPr>
                    <w:rFonts w:eastAsia="Times New Roman"/>
                    <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                    <w:lang w:val="en-US"/>
                </w:rPr>
            </w:pPr>
            <w:r>
                <w:rPr>
                    <w:rFonts w:eastAsia="Times New Roman"/>
                    <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                    <w:lang w:val="en-US"/>
                </w:rPr>
                <w:t>Use Case Model</w:t>
            </w:r>
        </w:p>
    </w:sdtContent>
</w:sdt>

我需要获得该段落的相应风格。如何获得这些风格?

1 个答案:

答案 0 :(得分:0)

 case "DocumentFormat.OpenXml.Wordprocessing.SdtBlock":
                        SdtBlock p1 = (SdtBlock)DocElement;
                        content1 = p1.InnerText;

                        IEnumerable<Paragraph> pp = p1.Descendants<Paragraph>();
                        foreach (Paragraph para in pp)
                        {
                         style=   GetParagraphStyleId(para);
                        }

其中 GetParagraphStyleId(para)

 public string GetParagraphStyleId(Paragraph p)
    {
        string ParaStyleIdValue = string.Empty;
        if (p.ParagraphProperties != null)
        {
            if (p.ParagraphProperties.ParagraphStyleId != null)
            {
                if (p.ParagraphProperties.ParagraphStyleId.Val != null)
                {
                    ParaStyleIdValue = p.ParagraphProperties.ParagraphStyleId.Val.Value;
                }
            }
        }
        return ParaStyleIdValue;
    }

  Using this i get the Style of the paragraph from sdtContent.