精华内容
下载资源
问答
  • 在项目需求中,需要对于一个word模板文档生成相对应的word文件,而此word模板是多页的并且需要在最终文件中生成相应的目录,由于项目环境是Linux,所以舍弃了jacob(windows环境)。然后主要是研究了Apache poi 进行...

    在项目需求中,需要对于一个word模板文档生成相对应的word文件,而此word模板是多页的并且需要在最终文件中生成相应的目录,由于项目环境是Linux,所以舍弃了jacob(windows环境)。然后主要是研究了Apache poi 进行word操作以及如何生成目录。
    主要分两个部分介绍:

    1. Apache poi 操作word:主要是通过XWPFDocument对象进行操作,api 地址:http://poi.apache.org/apidocs/dev/
    //读取word文件
    InputStream is = new FileInputStream(path);  
    XWPFDocument doc = new XWPFDocument(is);  
    List<IBodyElement> elements=  doc.getBodyElements();//获取所有元素(段落和表格)
    int pIndex =0;
    int tIndex =0;
    for(int i=0 ; i< elements.size(); i++) {
    	IBodyElement e = elements.get(i);
    	//判断元素类型:段落/ 表格
    	if(BodyElementType.PARAGRAPH.equals(e.getElementType())) {
    		XWPFParagraph pa = e.getBody().getParagraphArray(pIndex); //获取段落
    		List<XWPFRun> runs = paragraph.getRuns(); //获取段落文本
                    for (XWPFRun run : runs) {
                          ...替换文本
                    }
    	}
    	else if(BodyElementType.TABLE.equals(e.getElementType())){//表格
                   XWPFTable ta = e.getBody().getTableArray(tIndex);
                   List<XWPFTableRow> rows = ta.getRows(); //获取所有行
                   for (XWPFTableRow row : rows) { 遍历每行
    			List<XWPFTableCell> cells = row.getTableCells(); //获取每行单元格
    			for (XWPFTableCell cell : cells) { //遍历单元格
    				List<XWPFParagraph> paragraphs = cell.getParagraphs(); //获取单元格段落
    				for (XWPFParagraph paragraph : paragraphs) {
    					List<XWPFRun> runs = paragraph.getRuns();//获取单元格文本
    					for (XWPFRun run : runs) {
    						...替换文本
    					}
    				}
    			}
    		}
        	}
    }
    

    操作word方面还是很方便,可以参考一些更详细的:
    https://blog.csdn.net/eye9093/article/details/77368703
    https://blog.csdn.net/u012775558/article/details/79678701

    主要是介绍一下目录如何生成
    2. .Apache poi 生成word目录: 需要了解ooxml(Office Open XML)的大体结构,参考:http://www.datypic.com/sc/ooxml/s-wml.xsd.html,主要是通过xml标签进行识别分页。

    之前在网上也查阅了很多,发现目录的页数问题始终没有一个好的解决方案,之前看的可以通过转成pdf计算页数,但是这个耗时太长,特别是对于我们项目word页数较多的时候转换再重写消耗的时间很长。所以选择再去研究一下word对应的xml文件是否有思路去解决这一问题。
    我们选择的是xxx.docx 文件,通过word另存为xml
    在这里插入图片描述

    获取到此word文件的xml文件,xml文件结构如下:
    在这里插入图片描述
    其实大体看一下可以大致理清xml的结构,而我们主要是关注这一个标签
    在这里插入图片描述
    这个标签就是分页之后产生的标签(经测试插入空白页不会产生这个标签,如果是遇到表格处于分页那么分页后的表格的第一个单元格必须有文本,不然也不会产生这个标签,而且文档必须有页码),而通过获取这个标签就可以计算出页数,可以看出这个标签位置是<w:p>下的<w:r>下,可以通过poi判断这个标签是否存在:
    在这里插入图片描述

    主要代码如下:

    .//承接上面的获取的段落
    int num =1;//页数
    XWPFParagraph pa = e.getBody().getParagraphArray(pIndex); //获取段落
    List<CTR> ctrlist = pa.getCTP().getRList();//获取<w:p>标签下的<w:r>list
    for(int j=0; j < ctrlist.size(); j++) {  .//遍历r
    	CTR r = ctrlist.get(j); 
            List<CTEmpty> breaklist = r.getLastRenderedPageBreakList();//判断是否存在此标签
            if(breaklist.size() > 0) {
           		num++; //页数添加
            }
    }
    

    由此可以高效率的获取到页码,生成目录的代码可以参考:https://www.jianshu.com/p/0a32d8bd6878

    所以大体功能实现思路如下:

    1. POI读取word模板文件(模板必须有页码并且目录位置先用标签标记),然后进行模板内容替换。
    2. 内容替换完毕后,再整体遍历所有段落和表格,在添加目录项时将对应的目录标题和页码作为参数传入,生成目录。
    3. 全部生成完毕后,将文档输出到目标文件。
    展开全文
  • 编制word目录

    千次阅读 2005-08-06 11:52:00
    目录通常是文档不可缺少的部分,有了目录,用户就能很容易地知道文档中有什么内容,如何查找内容等。Word 提供了自动生成目录的功能,使目录的制作变得非常简便,而且在文档发生了改变以后,还可以利用更新目录的...
    目录通常是长文档不可缺少的部分,有了目录,用户就能很容易地知道文档中有什么内容,如何查找内容等。Word 提供了自动生成目录的功能,使目录的制作变得非常简便,而且在文档发生了改变以后,还可以利用更新目录的功能来适应文档的变化。
    6.10.1 创建标题目录
        Word 一般是利用标题或者大纲级别来创建目录的。因此,在创建目录之前,应确保希望出现在目录中的标题应用了内置的标题样式(标题1 到标题9)。也可以应用包含大纲级别的样式或者自定义的样式。如果文档的结构性能比较好,创建出合格的目录就会变得非常快速简便。
    6.10.1.1 从标题样式创建目录
        从标题样式创建目录的步骤如下:
        (1)把光标移到要拖入目录的位置。
        (2)单击【插入】菜单项的【索引和目录】菜单项,并在弹出的【索引和目录】对话框选择【目录】选项卡,如图6-43 所示。
        (3)在【格式】列表框中选择目录的风格,选择的结果可以通过【打印预览】框来查看。如果选择【来自模板】,标识使用内置的目录样式(目录1 到目录9)来格式化目录。如果要改变目录的样式,可以单击【更改】按钮,按更改样式的方法修改相应的目录样式。
    6.10.1.2 从其他样式创建目录
        如果要从文档的不同样式中创建目录,例如,不需要根据【标题 1】到【标题9】的样式来创建目录,而是根据自定义的【样式1】到【样式3】的样式来创建目录,操作步骤如下:
        (1)将光标移到要插入目录的位置。
        (2)打开如图6-43 所示的对话框,然后单击【选项】按钮,弹出如图6-45 所示的【目录选项】对话框。
        (3)在【有效样式】列表框中找到标题使用的样式,然后在【目录级别】文本框中指定标题的级别。如果不想用某一样式,要删除【目录级别】文本框中的数字。例如,用户可以删除标题1、标题2 和标题3 后面的【目录级别】中的数字。
        (4)单击【确定】按钮,返回到【索引和目录】对话框。
        (5)在【索引和目录】对话框中选择合适的选项后单击【确定】按钮。
    6.10.2 创建图表目录
        图表目录也是一种常用的目录,可以在其中列出图片、图表、图形、幻灯片或其他插图的说明,以及它们出现的页码。在建立图表目录时,用户可以根据图表的题注或者自定义样式的图表标签,并参考页序按照排序级别排列,最后在文档中显示图表目录。
        使用题注组织目录的方法如下:
        (1)确保文档中要建立图表目录的图片、表格、图形加有题注。
        (2)将光标移到要插入图表目录的地方。
        (3)单击【插入】菜单中的【索引和目录】菜单项,并在【索引和目录】对话框中选择【图表目录】选项卡,如图6-46 所示。
        (4)在【题注标签】下拉列表框中选择要建立目录的题注,如图表、公式、表格等。
        (5)在【格式】下拉列表框中选择一种目录格式,其他选项与创建一般目录一样,确定后单击【确定】按钮。
        在检查图表目录后,当将鼠标移到目录项目上时,鼠标指针会变为手形,单击鼠标左键接口跳转到相应的位置。

        利用题注建立图表目录是很方便的,但有时候,文档中的标签是用户键入的,并不是Word 的题注功能加上的。这时,就需要使用自定义样式建立图表目录,方法如下:
        (1)打开如图6-46 所示的【索引和目录】对话框,并选中【图表目录】选项卡。
        (2)单击【选项】按钮,弹出如图6-47 所示的【图表目录选项】对话框。
        (3)选中【样式】复选框,并在其右边的下拉列表框中选择图表标签使用的样式名后单击【确定】按钮。
        (4)在【索引和目录】对话框中选择各选项,然后单击【确定】按钮。
    6.10.3 创建引文目录
        引文目录与其他目录类似,可以根据不同的引文类型,创建不同的引文目录。在创建引文目录之前,应该确保在文档中有相应的引文。创建引文目录的操作步骤如下:
        (1)将光标移到要插入引文目录的位置。
        (2)单击【插入】菜单中的【索引和目录】菜单项,在弹出的【引文和目录】对话框中选择【引文目录】选项卡,如图6-48 所示。
        (3)在【类别】中选择相应的引文类别,注意此种类别应该是引文中已经创建有的引文类型。
        (4)创建的引文目录也有相应的内置引文目录样式来套用,如果要更改,可以单击【更改】按钮。
        (5)如果引文的页码超过五处,可以选中【使用“各处”】复选框,这样可以避免页码过多反而给用户造成不便。
        (6)如果引文过长,可以选择【保留原格式】,以保留原有的引文格式。
        (7)选好目录的制表前导符和格式后,单击【确定】按钮即可,插入的引文目录如图6-49 所示。
        如果要标记引文,以创建合适的引文目录,可以按如下方法进行:
        (1)选择要标记的引文。
        (2)打开如图6-48 所示的对话框,单击【标记引文】按钮,弹出如图6-50 所示的【标记引文】对话框。
        (3)在【类别】的下拉列表框中选择合适的类型。
        (4)单击【标记】按钮即可对当前所选的文字进行标记,如果单击【标记全部】按钮,将对存在于文档中的所选文字进行标记。
        (5)如果还要标记其他引文,不要关闭【标记引文】对话框,直接在文档中选取要标记的引文。
        (6)返回【标记引文】对话框,选中的引文将出现在【所选引文】下面,然后单击【标记】即可。
        (7)如果要修改一个存在的类别,可以单击【类别】按钮,弹出如图6-51 所示的对 话框。
        (8)选中要修改的类别,在【替换为】下面的文本框中输入要替换的文字,单击【替换】按钮即可。
        (9)完成后单击【确定】按钮,回到【标记引文】对话框。单击【关闭】按钮。

    6.10.4 更新目录
        Word 所创建的目录是以文档的内容为依据,如果文档的内容发生了变化,如页码或者标题发生了变化,就要更新目录,使它与文档的内容保持一致。最好不要直接修改目录,因为这样容易引起目录与文档的内容不一致。
        在创建了目录后,如果想改变目录的格式或者显示的标题等,可以再执行一次创建目录的操作,重新选择格式和显示级别等选项。执行完操作后,会弹出一个对话框,询问是否要替换原来的目录,选择【是】替换原来的目录即可。
        如果只是想更新目录中的数据,以适应文档的变化,而不是要更改目录的格式等项目,可以对着目录单击鼠标右键,在弹出的快捷菜单中单击【更新域】菜单项即可。用户也可以选择目录后,按下 F9 键更新域。 
    展开全文
  • word 目录格式调整

    千次阅读 2013-12-05 22:13:38
    我们使用的是word 07,插入目录操作步骤:引用è目录è插入目录。在插入目录中可以设置各级目录的字体大小等等。  最终发现只有将标题格式设置为样式时,设置的目录格式才会生效。一句话搞了一个晚上啊,嘿嘿。

             今天晚上和师兄一块研究自动生成目录中格式的调整。我们使用的是word 07,插入目录操作步骤:引用-->目录-->插入目录。在插入目录中可以设置各级目录的字体大小等等。

             最终发现只有将标题格式设置为样式时,设置的目录格式才会生效。一句话搞了一个晚上啊,嘿嘿。

    展开全文
  • word添加多个目录

    千次阅读 2019-10-30 11:34:08
    word添加多个目录 在制作标书或者文档时经常遇到同一个文档需要添加多个目录。 常规方法是通过引用—>添加目录来实现。 或者手动输入目录,经常遇到对不齐问题。 在此介绍通过域来实现添加多个目录,尤其...

    word添加多个目录

    在制作标书或者长文档时经常遇到同一个文档需要添加多个目录。

    常规方法是通过引用—>添加目录来实现。

    或者手动输入目录,经常遇到对不齐问题。

    在此介绍通过域来实现添加多个目录,尤其在制作标书或者文档较长中经常遇到。


    第一步:

    1. ctlr+n创建新文档,提供好素材。
    2. 需要创建目录项可以有样式也可以无样式。


    第二步:

    1. 光标移到待创建目录项前
    2. 单击菜单栏插入选项
    3. 选择文档部件
    4. 选择域


    第三步:

    1. 选择域TC
    2. 输入待创建目录项文本
    3. 勾选两项
    4. 等级输入1


    第四步:

    1. 单击菜单栏开始选项
    2. 单击显示/隐藏编辑标记
    3. 设置的域信息显示出来


    第五步:

    1. 在f后键入x
    2. 同样步骤设置其他三项


    第六步:

    1. 光标移动到带插入目录位置
    2. 单击菜单栏引用选项
    3. 单击目录选项
    4. 选择自定义目录


    第七步:

    单击选项按钮


    第八步:

    1. 取消样式勾选
    2. 取消大纲级别勾选
    3. 勾选目录项域
    4. 单击确定 确定


    第九步:

    Alt + F9


    第十步:

    显示出域信息


    第十一步:

    f后键入x


    第十二步:

    右键选择更新域


    第十三步:

    Alt + F9


    第十四步:

    1. 单击菜单栏开始
    2. 单击显示/隐藏编辑标记


    目录制作完成。

    同样步骤可以制作多个目录,与直接插入目录方法结合会有意想不到的结果。

    展开全文
  • Word插入图目录,表目录

    千次阅读 2020-02-20 11:04:49
    文章撰写插入目录的方法相信大家都不陌生,首先把各个标题级别设置好,插入目录即可,如下图: 而文章如果有一定长度,就需要插入图目录和表目录。 实际上插入图目录和表目录也非常简单,与插入目录的方法类似...
  • Word撰写书稿时,往往会在书籍完稿之后给书籍的前面加上一个目录。添加目录的方法大家都知道:直接在文件的开头执行“插入→引用→索引和目录”后,在图1中点击“索引”标签并进行相关设置确认即可。 但这样会有...
  • Word多级标题设置和自动生成目录

    万次阅读 2018-11-24 11:47:46
    在用word写学位论文或比较的报告的时候,经常在写完主要内容后要设置多级标题的格式并自动生成目录,这里记录分享一下自己的一些经验,虽然不一定是最佳的方法,但理解起来比较简单,也能比较有效的解决问题。...
  • 1.选择 “引用”--“目录”--“自定义目录” 2.在弹出框选择“修改” ***************下面设置“目录1”,“目录1”指的是“一级目录”*************** 1. 选中 “目录1”,点击“修改” 2.先设置字体,...
  • Word2007 如何自动生成目录的方法

    千次阅读 2013-05-31 13:01:25
    目录通常是文档不可缺少的部分,有了目录,用户就能很容易地知道文档中有什么内容,如何查找 内容等。Word提供了自动生成目录的功能,使目录的制作变得非常简便,而且在文档发生了改变以 后,还可以利用更新...
  • word排版之英文单词自动换行

    千次阅读 2015-08-05 13:00:34
    问题: 在word中输入比较的英文单词,如果单词超过了行尾,则会自动换行,这样就形成了上一行剩下的字数很少,如果是两...word排版之英文单词自动换行word排版之英文单词自动换行word排版之英文单词自动换行解
  • word文档添加目录

    2010-04-22 20:57:00
    当需要给word文档添加目录时,当需要查看word文档结构图(即左边显示目录--点击目录,右边自动跳转至目录所在页)时, 第一步,你需要先把希望显示的文字,设置其样式为“标题”,才能正常显示: 1. 点击“格式”--...
  • word排版之生成目录页码不右对齐

    千次阅读 2018-07-20 09:50:37
    word生成目录时,由于某种原因造成目录的页码参差不齐,页码没有靠右对齐,如上图。 这时可以再生成目录对话框中修改相关选项来更正这个错误。 在《常规》--《格式》中选择《正式》选项,然后生成目
  • 文档进行排版时常常需要生成目录,在Word中对需要生成目录的标题设置好大纲级别后就可以自动生成目录,如图1所示的文档,生成如图2所示的目录。(本文所用是Word2013) 图1 图2 对于如图2所示的...
  • Word中设置大纲目录和图表目录

    万次阅读 2011-04-13 15:31:00
    Word 一般是利用标题或者大纲级别来创建目录的。因此,在创建目录之前,应确保希望出现在目录中的标题应用了内置的标题样式(标题1 到标题9)。也可以应用包含大纲级别的样式或者自定义的样式。如果文档的结构性能...
  • Word给我们办公带来了不少方便,相信大家也是非常熟悉不过了。但是你确定在Word里面所有功能你都会使用吗?...创建目录创建目录2目录的制作自动添加目录Word2003全套视频教程 方法一 1、用WORD根据文章的章节自
  • word文档如何自动生成目录

    万次阅读 热门讨论 2009-03-24 19:51:00
     目录通常是文档不可缺少的部分,有了目录,用户就能很容易地知道文档中有什么内容,如何查找内容等。Word提供了自动生成目录的功能,使目录的制作变得非常简便,而且在文档发生了改变以后,还可以利用更新目录的...
  • 目录设置中的 字体格式没设置成完全一样的,包括西文字体。很大程度上是因为西文字体不一致,容易忽略。
  • 人工智能教程 - 目录

    万次阅读 多人点赞 2019-09-03 23:01:09
    目录 请先点击下面查看序言 序言 1 神经网络与深度学习 1.1 介绍神经网络 1.1.1 什么是神经网络 1.1.2 监督学习型神经网络 1.1.3 什么使深度学习火起来了 1.2 神经网络基础 1.2.1 如何将待...
  • 制表位 word排版技巧:制表位的使用方法 问题描述 如图所示 解决方案 方案1 打开视图选项卡->打开标尺。 点击1.1.1三分算法输入,拖动上方标尺,解决右对齐问题。 手动改字体大小,解决字体问题。 方案2 点击...
  • WORD中设置大纲目录,设置图表目录

    千次阅读 2009-01-23 14:46:00
    一、 创建标题目录Word 一般是利用标题或者大纲级别来创建目录的。因此,在创建目录之前,应确保希望出现在目录中的标题应用了内置的标题样式(标题1 到标题9)。也可以应用包含大纲级别的样式或者自定义的样式。...
  • word “域” 插入图片目录

    千次阅读 2019-05-10 17:53:50
    而图注(caption)太长目录,则会生成令人头大的目录。 为了生成简短的目录,我在这里用office2013做演示: * 用域的方法添加目录 1. 给图片添加域: 选中想要标记的语句,按alt+shift+o 在标目录项里更改...
  • Word的大纲视图/文档结构图,打开的时候默认所有层级全部展开,一旦文档非常,看起来就别扭,半条找不到东西。这里就设置它默认全部折叠,也就是只显示一级目录。实现原理就是建立一个word自动执行的宏(不仅仅是...
  • 目录 Word查找栏代码·通配符一览表 Word替换栏代码·通配符一览表 Word通配符用法详解 1、任意单个字符: 2、任意多个字符: 3、指定字符之一: 4、指定范围内的任意单个字符: 5、排除指定范、排除指定...
  • 文章目录01 - 论文多级标题及正文04 - 总结   上一文:【秃头系列】-【本科生毕设论文格式Word】自动生成论文多级标题并排版正文   下一文:【秃头系列】-【本科生毕设论文格式Word】调整小序号    01 - 论文...
  • Word XPWord XP 中目录的编制方法 1.单击要插入目录的位置。 2.指向"插入"菜单上的"引用",再单击"索引和目录"。 3.单击"目录"选项卡。 4.若要使用现有的设计,请在"格式"框中单击进行选择。 5.根据需要,选择...
  • word中自动插入目录,页码超出页边距的解决办法
  • 每次我更新整个目录时,目录里面的标题宽度都不一致。 问题解决: 1、显示标尺。 将视图菜单里面的标尺复选框勾上。 2、将标题所在的标尺和制表位重合。 选择定位到其中一个要调整宽度的标题里,将右侧的...
  • 很多同学在写论文的时候遇到word中自动插入目录但是目录的右边超过超过了页边距的界限了,以下为解决方法的操作步骤 1、全选目录 2、右击,选择“段落” 3、选择制表位 4、 设置制表位位置,图中所示为“37”,你们...
  •  WORD →点击需要插入的地方 → 插入菜单 → 索引和目录目录 → 确定 编制目录 目录通常是文档不可缺少的部分,有了目录,用户就能很容易地知道文档中有什么内容,如何查找内容等。Word 提供了自动生成目录...
  • word文档结构图和目录

    千次阅读 2007-10-09 19:47:00
    Word中,大家对段落的对齐方式、缩进、段前、段后间距等属性都比较熟悉,但是,你是否注意到段落的另外一个非常重要的属性——大纲级别(如图1)。 实际上,段落的大纲级别在很多地方都非常有用,下面我们就来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,837
精华内容 37,134
关键字:

word目录太长