问题描述
- 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
时间: 2024-10-10 15:51:22