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

2023-03-14,,

今天实现了利用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数据库中的相关教程结束。

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

下载本文的Word格式文档,以方便收藏与打印。