使用OpenXML SDK C#以编程方式将FootNotes添加到Word文档

时间:2016-05-09 09:34:43

标签: c# openxml footnotes

我需要使用Open XML SDK创建Word文档。我有文档文本和脚注。我使用下面的代码片段来创建Word文档。 我能够用文本创建文档,但我无法添加脚注。 您能否告诉我们如何使用Open Xml以编程方式添加FootNotes

 for (UIView *view in [cell subviews]) 
 {
     [view removeFromSuperview];
 }

2 个答案:

答案 0 :(得分:0)

我不是OpenXML的专家,但我认为你错过了添加对正文中脚注的实际引用,我调整了你的代码,我现在得到文档中的脚注。希望它有助于或至少让你开始。

Run run = Para.AppendChild(new Run());
run.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Text("This is main text of the document"));
var footnoteref = new FootnoteReference() { Id = 1 };
run.Append(footnoteref);

答案 1 :(得分:0)

我设法使用以下代码添加脚注。 我希望这会有所帮助。

        var ms = new MemoryStream();
        using (WordprocessingDocument myDoc = WordprocessingDocument.Create(ms, WordprocessingDocumentType.Document))
        {
            MainDocumentPart mainPart = myDoc.AddMainDocumentPart();
            var footPart = mainPart.AddNewPart<FootnotesPart>();
            footPart.Footnotes = new Footnotes();

            mainPart.Document = new Document();
            Body body = new Body();
            var p = new Paragraph();
            var r = new Run();
            var t = new Text("123");
            r.Append(t);
            p.Append(r);

            // ADD THE FOOTNOTE
            var footnote = new Footnote();
            footnote.Id = 1;
            var p2 = new Paragraph();
            var r2 = new Run();
            var t2 = new Text();
            t2.Text = "My FootNote Content";
            r2.Append(t2);
            p2.Append(r2);
            footnote.Append(p2);
            footPart.Footnotes.Append(footnote);

            // ADD THE FOOTNOTE REFERENCE
            var fref = new FootnoteReference();
            fref.Id = 1;
            var r3 = new Run();
            r3.RunProperties = new RunProperties();
            var s3 = new VerticalTextAlignment();
            s3.Val = VerticalPositionValues.Superscript;
            r3.RunProperties.Append(s3);
            r3.Append(fref);
            p.Append(r3);

            body.Append(p);
            mainPart.Document.Append(body);
            mainPart.Document.Save();
            ms.Flush();
        }
        return ms.ToArray();