Java 读取Word标题(目录)

摘要:
PublicclassGetTitle{publicstaticvoidmain(String[]args)throwsIOException{//加载Word测试文档Documentdoc=newDocument();//将标题内容保存到.txt文档Filefile=newFile(“GetTitle.txt”);if(file.exists()){file.delete();

概述

Word中的标题可通过“样式”中的选项来快速设置(如图1),

Java 读取Word标题(目录)第1张

图1

在添加目录时,可将“有效样式”设置为“目录级别”显示(如图2),一定程度上来说,标题大纲也可以作为目录来参考。

Java 读取Word标题(目录)第2张

图2

本文,将通过后端Java程序代码介绍如何来获取Word中的标题内容。

注:如果在Word中进行了如图2中的设置,此方法也可以作为获取目录的方法;若没有对应设置,则想要通过此方法来获取的目录内容可能不完整。

本次测试的Word文档如下图所示,【标题样式】和【目录级别】经过相应设置,在获取标题大纲时等同于获取目录:

Java 读取Word标题(目录)第3张

图3

代码测试环境

  • Word测试文档:.docx 2013版
  • 编译环境:IntelliJ IDEA 2018
  • Jdk版本:1.8.0
  • Word jar包:Free Spire.Doc for Java3.9.0

 

Java 程序代码

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;


public class GetTitle {
    public static void main(String[] args)throws IOException {
        //加载Word测试文档
        Document doc = new Document();
        doc.loadFromFile("sample.docx");

        //保存标题内容到.txt文档
        File file = new File("GetTitle.txt");
        if (file.exists())
        {
            file.delete();
        }
        file.createNewFile();
        FileWriter fw = new FileWriter(file, true);
        BufferedWriter bw = new BufferedWriter(fw);

        //遍历section
        for (int i = 0; i < doc.getSections().getCount(); i++)
        {
            Section section = doc.getSections().get(i);
            //遍历Paragraph
            for (int j = 0; j < section.getParagraphs().getCount(); j++)
            {
                Paragraph paragraph = section.getParagraphs().get(j);

                //获取标题
                if ( paragraph.getStyleName().matches("1"))//段落为“标题1”的内容
                {
                    //获取段落标题内容
                    String text = paragraph.getText();

                    //写入文本到txt文档
                    bw.write("标题1: "+ text + "
");
               }
                //获取标题
                if ( paragraph.getStyleName().matches("2"))//段落为“标题2”的内容
                {
                    //获取段落标题内容
                    String text = paragraph.getText();

                    //写入文本到txt文档
                    bw.write("标题2: " + text + "
");
                }
                //获取标题
                if ( paragraph.getStyleName().matches("3"))//段落为“标题3”的内容
                {
                    //获取段落标题内容
                    String text = paragraph.getText();

                    //写入文本到txt文档
                    bw.write("标题3: " + text+"
");
                }
                //获取标题
                if ( paragraph.getStyleName().matches("4"))//段落为“标题4”的内容
                {
                    //获取段落标题内容
                    String text = paragraph.getText();

                    //写入文本到txt文档
                    bw.write("标题4: " + text+"
");
                }

                bw.write("
");
            }

        }
        bw.flush();
        bw.close();
        fw.close();
    }
}

标题(目录)获取结果:

Java 读取Word标题(目录)第4张

本文完。

原创内容,如需转载,请注明出处!

免责声明:文章转载自《Java 读取Word标题(目录)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【学习笔记】tensorflow图片读取Springboot学习笔记(一)-线程池的简化及使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#通过模板导出Word(文字,表格,图片)

  C#导出Word,Excel的方法有很多,这次因为公司的业务需求,需要导出内容丰富(文字,表格,图片)的报告,以前的方法不好使,所以寻找新的导出方法,在网上找到了通过模板文件导出Word的方法,记录一下过程. 一:模板的创建                                  通过模板导出,肯定需要先创建模板,然后顾名思义就是将模板中提前...

pycharm切换conda虚拟环境

1、进入setting,选择解释器-->show All 2、点击右边的+号 3、选择Existing environment-->点击省略号  4、选择conda环境目录(在annaconda安装目录的envs下面),进入环境文件夹后选择python即可 5、选择好后,一路点击ok,直到setting界面,选择好刚载入的环境解释器,确...

如何打开mo文件并修改 PoEdit

  mo文件是被编译了的文件,一般在汉化的时候会用到。 比如我想修改phpmyadmin 的界面信息,就需要修改phpmyadmin.mo的文件内容。 可是用编辑器editplus或者Sublime 2打开它,都是乱码。 原来,这个文件不能直接打开。 搜索了一下,网上的信息。 发现通过poedit软件,可以先将mo转化为po格式的文件,然后poedit就...

maven的目录

maven目录主要分为: src/main/java:项目主体源代码目录 src/main/resources:项目主体源代码所需资源目录 src/test/java:测试代码目录(测试代码不会被打包部署) src/test/resources:测试代码所需资源目录 target:输出目录:一般编译后的文件,测试输出文件,打好的jar包等就放在这个目录下...

mongodb的TTL索引介绍(超时索引)

TTL索引是mongodb新支持的用于延时自动删除记录的一种索引。它仅包含一个字段,该字段值需要是Date()类型,并且不支持复合索引。可以指定某条记录在延时固定时间后自动删除。数据自动超时删除主要用在系统生成的事件、日志或者会话信息等不需要永久存储的数据。 创建语法 在集合eventlog的字段"lastModifiedDate"上创建延时1小时自动删除...

FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅

1、必要的准备工作 工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少。所以在开始我们写要准备如下: 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统 准备FreeRTOS系统源码,从官网下载最新版本的程序包,最新为v9.0.0,地址:https://sourceforge.net/projects/freert...