今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下:

package word;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem; import dao.WordDao; public class TikaExtraction { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub //List<Policy_content> list = new ArrayList<>();
InputStream is;
try {
is = new FileInputStream(new File("H:\\大数据\\大数据技术应用大作业-1\\河北省信息技术手册.doc")); POIFSFileSystem fs = new POIFSFileSystem(is);
HWPFDocument document = new HWPFDocument(fs);
Range range = document.getRange();
String title = null;int item=0;
for(int i=0;i<range.numParagraphs();i++) {//通过循环读取每一段
Paragraph para1 = range.getParagraph(i);
CharacterRun run1=para1.getCharacterRun(0); //获取每一段的属性
item = i;//item用来记录当前位置
if(run1.getFontSize()==26) {//如果字体符合,说明该段落是小标题
String context = "";
title = para1.text().trim().replaceAll("\r\n", "");//取这一段为当前的title值 for(int j=item+1;j<range.numParagraphs();j++) {//从当前段的下一段开始,查找所有解释段落, Paragraph para2 = range.getParagraph(j);
CharacterRun run2=para2.getCharacterRun(0); if(run2.getFontSize()==18) {//如果字体符合,说明该段落是解释段落之一 context = context+para2.text().trim().replaceAll("\r\n", "");//把解释段落合并成一个字符串 }
if(run2.getFontSize()==26) {//如果字体为26,说明到了下一个小标题,则退出循环
break;
}
}
//以下为插入数据库方法
WordDao worddao = new WordDao();
worddao.addData(title, context); } } } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

代码解释注释上已经写了。

一下是我找到的对于POI工具的介绍:

使用POI读写Word doc文件

Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用HWPFDocument来表示一个word doc文档。在HWPFDocument里面有这么几个概念:

Range:它表示一个范围,这个范围可以是整个文档,也可以是里面的某一小节(Section),也可以是某一个段落(Paragraph),还可以是拥有共同属性的一段文本(CharacterRun)。

  Section:word文档的一个小节,一个word文档可以由多个小节构成。

  Paragraph:word文档的一个段落,一个小节可以由多个段落构成。

  CharacterRun:具有相同属性的一段文本,一个段落可以由多个CharacterRun组成。

  Table:一个表格。

  TableRow:表格对应的行。

TableCell:表格对应的单元格。

Section、Paragraph、CharacterRun和Table都继承自Range。

在我自己的代码中主要用的就是一些POI工具的基础知识,利用range获取word的所有段落,用过循环遍历所有段,再利用characterRun判断字体大小获取标题和解释的文字。

转载于:https://www.cnblogs.com/zhangliqiangvictory/p/10569597.html

利用POI工具读取word文档并将数据存储到sqlserver数据库中的更多相关文章

  1. Python读取word文档内容

    1,利用python读取纯文字的word文档,读取段落和段落里的文字. 先读取段落,代码如下: 1 ''' 2 #利用python读取word文档,先读取段落 3 ''' 4 #导入所需库 5 fro ...

  2. java中读取word文档里的内容

    package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...

  3. C#读取Word文档内容代码

    首先要添加引用com组件:然后引用: using Word = Microsoft.Office.Interop.Word; 获取内容: /// /// 读取 word文档 返回内容 /// //// ...

  4. Python读取word文档(python-docx包)

    最近想统计word文档中的一些信息,人工统计的话...三天三夜吧 python 不愧是万能语言,发现有一个包叫做 docx,非常好用,具体查看官方文档:https://python-docx.read ...

  5. C# 设置、删除、读取Word文档背景——基于Spire.Cloud.Word

    Spire.Cloud.Word.Sdk提供了接口SetBackgroudColor().SetBackgroudImage().DeleteBackground().GetBackgroudColo ...

  6. [转载]linux上用PHP读取WORD文档

    在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档. 再使用php执行系统命令调用而已. 具体操作如下: 1.安装antiword 官方站:htt ...

  7. C#动态生成Word文档并填充数据

    C#也能动态生成Word文档并填充数据 http://www.cnblogs.com/qyfan82/archive/2007/09/14/893293.html 引用http://blog.csdn ...

  8. poi 读取word文档

    1.导入jar包 官网下载地址: https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.zip 最开始 ...

  9. java 使用poi读取word文档存入数据库

    使用的poi jar包需要自己下载 读取的word文档中含有多个图片,所以分为两个部分,一个部分读取各个表格中内容,一个是将所有图片截取出来: /** * 遍历段落内容 * docxReadPath ...

随机推荐

  1. 1035 Password (20分)(水)

    To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...

  2. Linux - ubuntu下Vim安装失败,报The following packages have unmet dependencies: vim : Depends: vim-common

    错误命令行 root@ubuntu:/etc/apt# apt install vim Reading package lists... Done Building dependency tree R ...

  3. C++模板心得

    C++模板心得 我开始学模板的时候一脸懵逼,真的看不懂模板是怎么作用的.因为大多数人的代码把模板声明和函数.类的声明分行写,让我以为模板的作用是全局的,实际上应该像如下理解. 函数模板 templat ...

  4. SpringMVC(三):转发和重定型

    本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...

  5. Hadoop(十):本地IDEA链接远程Hadoop

    本文使用的Hadoop为2.7.7,版本如果不同要下载相应版本的文件 配置本地的Hadoop库(不需完整安装,但是要有环境支持) 下载文件 https://github.com/speedAngel/ ...

  6. Java第三天,如何从键盘输入?匿名对象的使用方法

    在学习完Java的基础语法之后,我们还需要学会如何使用API文档,这几乎是程序员所必备的能力.对于API我们不必须去记住每一个类的功能乃至用法,只需会查就行了.但是话说回来,一些经常使用的类我们还是必 ...

  7. java 字符串截取 - 最后带上mysql字符串截取比较

    Java中的substring()方法有两个方法的重载,一个带一个参数的,一个带两个参数的. 第一种写法: substring(n);//从索引是n的字符开始截取,条件(n>=0,n<字符 ...

  8. Mycat使用配置实践

    本来写了好多,关于配置的解释和使用以及注意,但是发现有点啰嗦含金量也不高,所以直接把实际使用的一个例子放着吧,供参考. <!DOCTYPE mycat:schema SYSTEM "s ...

  9. Redis学习二:Redis高并发之主从模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 前面已经学习了Redis的持久化方式,接下来开始学习Redi ...

  10. 在VS Code下配置Julia

    原来尝试用Sublime text3配置Julia,但是老是会出一些问题,所以直接在VS code下配置了 1.下载Julia 2.安装,安装过程和其他得软件安装一样,可以改变安装路径 3.安装完成后 ...