java读取word目录结构

最近项目中有个读取word文档的需求,需要把word文档中的目录结构目录下的内容读取出来存到数据库中,poi需要能实现相关功能,但是需要自己解析文档结构,而且对2003的支持也不是很好,想问下有没有现成的类库,可以直接拿到word的文档目录结构,及每个标题的内容,收费的也可以,请大家帮帮忙,谢谢……

回答

POI好像实现不了,如果是Word XML可式的文件格式,用Java自己解析就可以了。二进制的DOC目前无解。

@勤奋的码农 jacob试过吗,不过MS很久没有更新过了。POI到是可以自己通过解析实现,但是想找个现成的,不知道有没有,收费的也可以

POI不可以么?好吧,POI没用过,不是十分清楚。

不过doc不是无解的,有解析doc的库,不过是C#的,java的还没有看到。

那就只好用大招了,一个是自己解析(微软有doc格式说明),一个是用libreoffice的sdk或源码

Aspose.Words for Java

我用POI解析过啊,可以拿到目录结构的,只不过我只是用word 2003跑了有没有当时的源码,我现在就遇到这个问题,不知道怎么解析word的目录结构windows平台直接借助微软api,其他不知道

这有个帖子是关于read Word document 目录结构的,你可以看一下

http://bbs.csdn.net/topics/360073389

http://social.msdn.microsoft.com/Forums/vstudio/zh-CN/6cdc3ab0-1018-4f4c-9793-84b89128d838/cwordtxt?forum=visualcshartzhchs

该评论暂时无法显示,详情咨询 QQ :912889742

import com.spire.doc.Document;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;

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

public class GetTOC {
    public static void main(String[] args) throws IOException {
        //加载包含目录的Word文档
        Document doc = new Document();
        doc.loadFromFile("目录2.docx");

        //获取第一节
        Section section = doc.getSections().get(0);

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

        //遍历第一节中的所有段落
        for (int i = 0; i < section.getParagraphs().getCount(); i++)
        {
            Paragraph paragraph = section.getParagraphs().get(i);
            //判断段落是否为目录
            if (paragraph.getStyleName().matches("TOC\\w+"))
            {
                //获取目录中的文本内容
                String text = paragraph.getText();
                //写入txt文档
                bw.write( text+"\r");
            }
            bw.write("\n");
        }

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

java读取word目录结构

在程序中需引入Free Spire.Doc for Java包里面的Spire.Doc.jar文件。另外,也能通过pom.xml去配置导入:


<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc.free</artifactId>
        <version>5.2.0</version>
    </dependency>
</dependencies>