近期的连串中有1个职能点为:根据分析数据库并转移报告。不过不是大数目、数据挖掘之类,报告的内容、协会措施都是先期固定下来的。达成的法门为,在一般word文档中插入书签制成模板,然后程序行使OpenXML解析文档,找到书签,并依照书签的意思进行相应的一个钱打二十六个结,最终用计量结果替换书签,替换的内容涉及到文本、图表、表格等。

  这一套已经足以稳定工作,但美中相差的是有关目录的题材,太长的文档起初有须要存在目录,但在模板中签入真实数据后,最终文档的字数每便都是不等同的,那就须要目录能都自动更新,但不了解OpenXML怎么落到实处(好汉遭遇过的话恳请告知),最终找到了别样方法。

  第二,种是使用宏。在模板中设置好标题并插入目录,然后在VBA编辑器中,双击This
Document,添加如下代码:

Sub AutoOpen()
  Dim aStory As Range
  Dim aField As Field
     For Each aStory In ActiveDocument.StoryRanges
        For Each aField In aStory.Fields
           aField.Update
        Next aField
     Next aStory
End Sub

图片 1

 

  目录属于域的一种,上边的代码大约意思是需要word在每一趟打开该文档时都遍历并立异每一个域,这样就把目录自动更新了。但那几个主意在word禁用了宏时便会失灵。

 

  第1种是手工修改word背后的XML文件,那些法子是看老外的二个摄像学的,链接:http://ericwhite.com/blog/screen-cast-exploring-tables-of-contents-in-open-xml-wordprocessingml-documents/。不得不佩服,查找别的帖子的时候看到过视频作者的发言,这个Eric
惠特e此前也受困于那个难题,得到启迪后把难题顺遂消除,其余还做了那份越发细致的摄像。

   要编写所谓的“word背后的XML文件”,小编的措施是把word后缀从”docx”改为“zip”,然后解压,记事本打开。埃里克惠特e的格局应该是用了OpenXML相关的插件,用vs可以向来打开word对应的xml文件并编制,这几个尤其便宜,不过小编不会用唉。

  可以打开xml文件后,先修改settings.xml,在最后加上一句 
<w:updateFields w:val=”true”/>,注意xml文件的层系。

图片 2

  还要修改document.xml文件,找到目录所在的有的,不佳找可以搜索w:fldChar,fldChar就是跟域相关的竹签,模板中的每条目录都被包围在w:hyperlink标签之中,找到这一个并删除,最终目录部分只留下如此的:

图片 3

留意红框中的内容,最后一定于去掉了具体的目录音信,只保留了目录的框架。xml必须有闭标签,删除的时候注意别删错了,比如小编及时的气象就是不小心把那一个p标签删了。

图片 4

  改好后,保存,重新回落,将后缀改回“docx”便OK了。

  首回打开会有询问是不是更新域,选是。

图片 5

 

如上便是这三种情势。各有优劣,相比较一下

  方法一(宏) 方法二(修改XML)
失效 word禁用宏便会失效 不会失效
更新 每次打开自动更新 只在第一次更新
样式 可以设置目录的字体字号 不能修改目录样式

 

可以观察三种办法都不全面,应该还有更好的主意啊,请多指教。

 

 

 

相关文章

网站地图xml地图