Connor 2015-05-25 13:11 采纳率: 0%
浏览 2418
已结题

Open XML 创建的 WORD 目录 没有页码

图片说明

利用 Open XML 创建了一个带目录的 WORD 文档,如上图 想让生成的目录带有页码信息,求大神指教。
代码下载地址:http://pan.baidu.com/s/1kTILhInhttp://pan.baidu.com/s/1kTILhIn
主要代码如下:
#region 根据查找到带有书签的标题,生成目录
for (int i = 0; i < paragrap.Count; i++)
{
W.Paragraph oldParagraph = paragrap[i];
W.BookmarkStart bs = oldParagraph.Descendants().First();
W.ParagraphStyleId ps = oldParagraph.Descendants().First();
W.Text oldText = oldParagraph.Descendants().First();

            #region 创建目录
            W.Paragraph newParagraph = new W.Paragraph();
            W.ParagraphProperties paragraphProperties1 = new W.ParagraphProperties();
            //假设标题对应的格式是标题1,则目录中应该为10
            W.ParagraphStyleId paragraphStyleId = new W.ParagraphStyleId() { Val = ps.Val + 0 };

            W.Tabs tabs1 = new W.Tabs();
            W.TabStop tapStop1 = new W.TabStop() { Val = W.TabStopValues.Right, Leader = W.TabStopLeaderCharValues.Dot, Position = 8296 };

            tabs1.Append(tapStop1);

            W.ParagraphMarkRunProperties paragraphMarkRunProtites = new W.ParagraphMarkRunProperties();
            W.NoProof noProof1 = new W.NoProof();

            paragraphMarkRunProtites.Append(noProof1);

            paragraphProperties1.Append(paragraphStyleId);
            paragraphProperties1.Append(tabs1);
            paragraphProperties1.Append(paragraphMarkRunProtites);


            W.Hyperlink hyperlink1 = new W.Hyperlink() { History = true, Anchor = bs.Name };

            W.Run run1 = new W.Run();

            W.RunProperties runProperties1 = new W.RunProperties();
            W.RunFonts runFonts1 = GenerateRunFonts(fontName);
            W.NoProof noProof2 = new W.NoProof();

            runProperties1.Append(runFonts1);
            runProperties1.Append(noProof2);
            W.Text text1 = new W.Text();
            text1.Text = oldText.Text;

            run1.Append(runProperties1);
            run1.Append(text1);

            W.Run run2 = new W.Run();

            W.RunProperties runProperties2 = new W.RunProperties();
            W.NoProof noProof3 = new W.NoProof();
            W.WebHidden webHidden1 = new W.WebHidden();

            runProperties2.Append(noProof3);
            runProperties2.Append(webHidden1);

            W.TabChar tabChar1 = new W.TabChar();
            run2.Append(runProperties2);
            run2.Append(tabChar1);


            W.Run run3 = new W.Run();

            W.RunProperties runProperties3 = new W.RunProperties();
            W.NoProof noProof4 = new W.NoProof();
            W.WebHidden webHidden2 = new W.WebHidden();
            runProperties3.Append(noProof4);
            runProperties3.Append(webHidden2);
            W.FieldChar fieldChar1 = new W.FieldChar() { FieldCharType = W.FieldCharValues.Begin };

            run3.Append(runProperties3);
            run3.Append(fieldChar1);


            W.Run run4 = new W.Run();

            W.RunProperties runProperties6 = new W.RunProperties();
            W.NoProof noProof6 = new W.NoProof();
            W.WebHidden webHidden3 = new W.WebHidden();

            runProperties6.Append(noProof6);
            runProperties6.Append(webHidden3);
            W.FieldCode fieldCode4 = new W.FieldCode() { Space = SpaceProcessingModeValues.Preserve };
            fieldCode4.Text = "PAGEREF " + bs.Name + "\\h";

            run4.Append(runProperties6);
            run4.Append(fieldCode4);

            W.Run run5 = new W.Run();

            W.RunProperties runProperties8 = new W.RunProperties();
            W.NoProof noProof8 = new W.NoProof();
            W.WebHidden webHidden5 = new W.WebHidden();

            runProperties8.Append(noProof8);
            runProperties8.Append(webHidden5);
            W.FieldChar fieldChar4 = new W.FieldChar() { FieldCharType = W.FieldCharValues.Separate };

            run5.Append(runProperties8);
            run5.Append(fieldChar4);

            W.Run run6 = new W.Run();

            W.RunProperties runProperties10 = new W.RunProperties();
            W.NoProof noProof10 = new W.NoProof();
            W.WebHidden webHidden7 = new W.WebHidden();

            runProperties10.Append(noProof10);
            runProperties10.Append(webHidden7);
            W.FieldChar fieldChar5 = new W.FieldChar() { FieldCharType = W.FieldCharValues.End };

            run6.Append(runProperties10);
            run6.Append(fieldChar5);


            hyperlink1.Append(run1);
            hyperlink1.Append(run2);
            hyperlink1.Append(run3);
            hyperlink1.Append(run4);
            hyperlink1.Append(run5);
            hyperlink1.Append(run6);
            newParagraph.Append(paragraphProperties1);
            if (i == 0)
            {
                //目录是用域做出来的,所以这里首先添加目录域开始代码
                AddCodeStart(newParagraph);
            }
            newParagraph.Append(hyperlink1);
            if (i == paragrap.Count - 1)
            {
                //目录是用域做出来的,所以这里首先添加目录域结束代码
                AddCodeEnd(newParagraph);
            }

            body.InsertAt<W.Paragraph>(newParagraph, i);
            #endregion

        }
        #endregion

  • 写回答

2条回答

  • abuying 2017-08-01 08:57
    关注

    fieldCode4.Text = "PAGEREF " + bs.Name + "\h";

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!