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

问题描述

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

openxml-Open XML 创建的 WORD 目录 没有页码的相关文章

文档-如何使用freemarker完成word目录的动态生成?

问题描述 如何使用freemarker完成word目录的动态生成? 目前已经使用freemarker生成的带格式的word文档,但是目前对于word目录的页码生成尚存在问题,使用jacob来导出的话一直包未将dll文件放入正确的目录下面. 解决方案 看看这个吧,写的很详细,太多了不给你粘了http://zhixinghh-163-com.iteye.com/blog/1914785 希望对你有帮助

SQL SERVER 2005 XML 最佳实施策略目录视图

用于原生 XML 支持的目录视图 • 目录视图的目的是提供与 XML 用法有关的元数据信息.下面讨论了其中几个目录视图. XML 索引 XML 索引项出现在目录视图 sys.indexes 中,索引"type"为 3."name"列包含 XML 索引的名称. XML 索引还被记录在目录视图 sys.xml_indexes 中,它包含 sys.indexes 的所有列以及一些对 XML 索引有意义的特殊列.列"secondary_type"中的值

用ASP创建Microsoft Word 文件(转)

word|创建 随着人们对数据库及动态HTML (DHTML)的应用和对XML的兴趣的增加,所以在商业网站的数据中使用动态内容变得越来越普遍.这里我们就成功运用了一则最新的技巧--用ASP创建 Word 文件,我想您看后肯定会受到很大的启发. 原文出处:http://www.asptoday.com/articles/19990825.htm 背景 BuildDoc.asp是一个ASP文件,它读入一个网页表单的输出,并创建一个Microsoft Word文件作为输出, 其中包含根据表单内数据改变

用ASP创建Microsoft Word 文件

word|创建 随着人们对数据库及动态HTML (DHTML)的应用和对XML的兴趣的增加,所以在商业网站的数据中使用动态内容变得越来越普遍.这里我们就成功运用了一则最新的技巧--用ASP创建 Word 文件,我想您看后肯定会受到很大的启发. 原文出处:http://www.asptoday.com/articles/19990825.htm 背景 BuildDoc.asp是一个ASP文件,它读入一个网页表单的输出,并创建一个Microsoft Word文件作为输出, 其中包含根据表单内数据改变

用C#与XML创建动态分层菜单

xml|菜单|创建|动态 从在复杂的B2B交易中的交换数据到为应用程序提供配置文件结构,XML在许多方面大显身手!由于XML不断地获得软件的支持,我们完全能够预见:XML的应用将不断增加.本文就介绍这样一种应用程序,它使用XML创建类似于Windows开始菜单的分层菜单系统,从而向终端用户提供更满意的Web体验. 这个应用程序将使用 C#.XML和服务器端Microsoft .Net框架,创建一个 DHTML 结构,IE4 或更高版本的浏览器可以操作它并在客户端动态显示.由于我们可以快速地访问服

使用PHP目录函数实现创建、读取目录教程实例

今天主要介绍在PHP网站开发中文件目录函数的应用.在PHP网站开发中,我们时常需要读取目录文件信息或者创建目录以存放必要的文件,而当目录文件大小超出规定大小时我们又需要删除目录文件,如手工删除目录即费时又费力,我们完全可以通过PHP自带的目录操作函数实现对目录文件的管理. 本文以实例教程形式讲解如何使用PHP文件目录函数,实例的主要功能:一.利用PHP目录函数创建多个目录,二.在目录下创建文本文件并在文件中写入相关信息,三.递归实现读取(遍历)目录(文件夹)信息并以列表形式列出目录下的所有子目录

最简单的XML创建、写入操作

xml|创建 //建一個新的空的XML文檔   XmlTextWriter objXml = new XmlTextWriter(Server.MapPath("Text.xml"),null);   //格式化輸出XML文檔   objXml.Formatting = Formatting.Indented;   objXml.Indentation = 4;   //寫入XML文檔標記   objXml.WriteStartDocument();   //寫入XML文檔注釋   o

使用XML创建 EMAIL 模板

xml|创建|模板 发送邮件是web应用系统的一个基本功能.一般来说,邮件都有特定的类型,比如说密码提醒,欢迎信息,订单确认或者收信确认.尽管不同应用邮件的内容各不相同,但是发送邮件的过程基本上是一样的. 构建消息,发送给邮件服务器,发送. 当使用java开发的时候,我们常常使用JavaMail API 来连接邮件服务器发送邮件.但是这种方式过于笨重(主要由邮件的灵活性造成的),所以当你需要多次使用这种方式发送邮件的时候,最好写一个wrapper.根据使用的方式不同,wrapper可以是发送某一

XML创建可排序、分页的数据显示页面

xml|创建|分页|排序|数据|显示|页面 在web开发中,我们经常会遇到分页显示和排序数据记录集的情况,这在服务器端使用服务器端的代码和数据库技术是件很轻松的事情,比如:asp.php.jsp等.然而,如果要在客户端显示多条记录并且排序是一件很令人头疼的事情.下面,我们利用extensible markup language(xml,可扩展标记语言)和extensible stylesheet language transformations(xslt,可扩展样式单语言转换),并结合xml p