java poi读取word中附件_JAVA - 实现 - 利用POI读取word文档实例

本文档提供了一个使用Apache POI库读取Word文档(.doc)的Java实现示例,主要关注如何获取特定字号的文本,用于提取文档中的热词和解释,并将数据保存到数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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(2);// 0-封面,1-目录,2-文本;第3小节

//2段落处理

/*

* 维护两个变量

*

* 热词和解释区别 :大小-word:26,explaining:18

*

*/

String word = "";

String explaining = "";

int wordOK = 0;

int explainOK = 0;// 判断当前word&explain是否可以填入数据库

int count = 24;// 读取几条数据到数据库

int begin = 2;// 段落读取位置

for (int i = 0; i < count;) {

Range para = hotWord.getParagraph(begin);

CharacterRun field = para.getCharacterRun(0);

int fontSize = field.getFontSize();

if (fontSize == 26) {

word = para.text();

wordOK = 1;

begin++;

} else {

while (fontSize < 26) {

explaining += para.text();

begin++;

para = hotWord.getParagraph(begin);

field = para.getCharacterRun(0);

fontSize = field.getFontSize();

}

explainOK = 1;

}

// 判断word&explain是否可以填入数据库

if (wordOK == 1 && explainOK == 1) {

MysqlDaoImp.addData(word, explaining);

i++;

//填入数据库后,一切归"0"

wordOK = 0;

explainOK = 0;

word="";

explaining="";

}

}

// 输出测试

// System.out.println("读取:" + "head:");

} catch (IOException e) {

e.printStackTrace();

System.out.println("IO错误。");

}

} else {

System.out.println("文件格式 error:not .doc");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值