package read.document;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
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.Range; import pers.mysql.DBUtil;
import pers.mysql.MysqlDao;
import pers.mysql.MysqlDaoImp; public class WordReading { public static void main(String[] args) { String filePath = "*****.doc"; readOnWord(filePath); } public static void readOnWord(String filePath) { if (filePath.endsWith(".doc")) { // 输入流-基类
InputStream is = null;
try {
is = new FileInputStream(filePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件打开失败。");
} // 加载doc文档
try { HWPFDocument doc = new HWPFDocument(is); Range text = doc.getRange();// 整个文档 /*
* 分解word:文本 ->小节 ->段落 ->characterRun(理解为小单元)
* section -小节; paragraph - 段落
*/ //1分出内容节点
Range hotWord = text.getSection();// 0-封面,1-目录,2-文本;第3小节 //2段落处理
/*
* 维护两个变量
*
* 热词和解释区别 :大小-word:26,explaining:18
*
*/
String word = "";
String explaining = "";
int wordOK = ;
int explainOK = ;// 判断当前word&explain是否可以填入数据库 int count = ;// 读取几条数据到数据库
int begin = ;// 段落读取位置 for (int i = ; i < count;) {
Range para = hotWord.getParagraph(begin);
CharacterRun field = para.getCharacterRun();
int fontSize = field.getFontSize();
if (fontSize == ) {
word = para.text();
wordOK = ;
begin++;
} else {
while (fontSize < ) {
explaining += para.text();
begin++;
para = hotWord.getParagraph(begin);
field = para.getCharacterRun();
fontSize = field.getFontSize();
}
explainOK = ;
}
// 判断word&explain是否可以填入数据库
if (wordOK == && explainOK == ) {
MysqlDaoImp.addData(word, explaining);
i++;
//填入数据库后,一切归"0"
wordOK = ;
explainOK = ;
word="";
explaining="";
}
}
// 输出测试
// System.out.println("读取:" + "head:"); } catch (IOException e) {
e.printStackTrace();
System.out.println("IO错误。");
} } else {
System.out.println("文件格式 error:not .doc");
} }

利用POI读取word文档实例的更多相关文章

  1. 利用poi操作word文档

    关键字:POI JAVA 批注 总页数 总字符数 一:认识POI Apache POI是一个开源的利用Java读写Excel.WORD等微软OLE2组件文档的项目.最新的3.5版本有很多改进,加入了对 ...

  2. poi 读取word文档

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

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

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

  4. POI生成word文档完整案例及讲解

    一,网上的API讲解 其实POI的生成Word文档的规则就是先把获取到的数据转成xml格式的数据,然后通过xpath解析表单式的应用取值,判断等等,然后在把取到的值放到word文档中,最后在输出来. ...

  5. Python读取word文档内容

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

  6. 利用POI工具读取word文档并将数据存储到sqlserver数据库中

    今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...

  7. 用java语言通过POI实现word文档的按标题提取

    最近有一个项目需要将一个word文档中的数据提取到数据库中.就去网上查了好多资料,最靠谱的就是用poi实现word文档的提取. 喝水不忘挖井人,我查了好多资料就这个最靠谱,我的这篇博客主要是借鉴htt ...

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

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

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

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

随机推荐

  1. springCloud组件启动时,提示内部tomcat无法加载

    忘记拷贝当时的异常信息了. 本地启动模块,做测试 大概就是emmble tomcat就是表示内部tomcat无法启动. 出现这样的异常是由于配置中心得代码已经修改,但是没有从git上down下来,然后 ...

  2. Spring 自动注册及自动装配

    Spring支持三种注册Bean及装配Bean的方式: 显式地在Java代码中注册及装配 显示地在Xml文件中注册及装配 隐式地装配,即自动注册及装配 这三种方式可以混合使用.选择哪种更多地是看个人品 ...

  3. 机器学习:PCA(实例:MNIST数据集)

    一.数据 获取数据 import numpy as np from sklearn.datasets import fetch_mldata mnist = fetch_mldata("MN ...

  4. Celery-4.1 用户指南: Optimizing (优化)

    简介 默认的配置做了很多折中考虑.它不是针对某个情况优化的,但是大多数情况下都工作的非常好. 基于一个特殊的使用场景,有很多优化可以做. 优化可以应用到运行环境的不同属性,可以是任务执行的时间,使用的 ...

  5. adb基本命令总结(Android Debug Bridge)

    adb 是PC和设备连接的桥梁,可以通过adb对devices进行相关操作 adb devices           列出你的devices adb kill-server         杀掉ad ...

  6. Python类(四)-多态

    多态即一个接口,多种实现 按照平常直接调用 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" class Person(obje ...

  7. 2016.9.9《Oracle查询优化改写技巧与案例》电子工业出版社一书中的技巧

    1.coalesce (c1,c2,c3,c4,...) 类似于nvl但可以从多个表达式中返回第一个不是null的值 2.要在where条件中引用列的别名,可以再嵌套一层查询 select * fro ...

  8. 第十六章 Velocity工作原理解析(待续)

    Velocity总体架构 JJTree渲染过程解析 事件处理机制 常用优化技巧 与JSP比较 设计模式解析之合成模式 设计模式解析之解释器模式

  9. composer update的错误使用以及如何更新composer.lock文件

    用composer update装包是错误的. 安装包标准的方法应该是 require ,或者手动写 compose.json 文件,然后 composer install .如果只是需要更新 com ...

  10. Json-lib 进行java与json字符串转换之二

    二.list和json字符串的互转 list-->>json字符串 public static void listToJSON(){ Student stu=new Student(); ...