0

このような OOXML ドキュメントの Paragraph Element があります。ここで、C# を使用してプログラムでこのテキストから FootNoteRefrence id が必要です。

document.xml からのテキスト

<w:p>
  <w:r>
    <w:rPr>
      <w:rStyle w:val="FootnoteReference" />
    </w:rPr>
    <w:footnoteReference w:id="2" />
  </w:r>
</w:p>

C# コード

private BodyPara writePara(BodyPara bPara2, OpenXmlElement pTag)
    {
        Footnotes fn = null;
        foreach (var run in pTag.Descendants<Run>())
        {
            if (run.HasChildren)
            {

                foreach (var runProp in run.Descendants<RunProperties>())
                {
                    foreach (var runStyle in runProp.Descendants<RunStyle>())
                    {

                        if (runStyle.Val != null)
                        {
                            string runSty = runStyle.Val.Value;
                            if (runSty == "FootnoteReference")
                            {
                                if (fn != null)
                                {
                                    bPara2.FootNotes.Add(fn);

                                }
                                fn = new Footnotes();

                            }
                            else if (runSty == "CommentReference")
                            {


                            }
                            else
                            {
                                if (fn != null)
                                {
                                    fn.FootText = fn.FootText + run.InnerText;
                                }
                            }

                        }
                    }
                    //FootnotesPart footnotesPart = wordDoc.MainDocumentPart.FootnotesPart;
                    //if (footnotesPart != null)
                    //{
                    //  IEnumerable<Footnote> footnotes = footnotesPart.Footnotes.Elements<Footnote>();
                    // ...
                    //}
                    if (runProp.NextSibling() != null)
                    {
                        OpenXmlElement fr = runProp.NextSibling();
                        foreach (var fnref in fr)
                        {
                            if (fnref != null)
                            {
                                // fn.FootnoteID = fnref.Id.Value.ToString();
                            }
                        }
                    }
                    foreach (var shd in runProp.Descendants<Shading>())
                    {
                        if (shd.Fill != null)
                        {
                            string shdvalue = shd.Fill.Value;
                        }
                    }
                }
            }
        }

        return bPara2;
    }

これを使用して、各脚注の脚注参照 ID を取得しています。このループでは、タイプ FootNoteReference の Run の子孫とその値を取得できません。 Plsはこれで私を助けてください. ありがとうございました。

4

1 に答える 1