本文方法借鉴于https://www.cnblogs.com/ljysy/p/10574197.html

在经过朋友的指导下,在处理文档的方式上有所不同。

我的数据库使用的是SQL server,这篇博客将不介绍如何将数据存储进数据库中,只进行java POI处理文档数据的介绍,在处理完数据后,如果想要存储进不同的数据库的话,只需要更改数据的连接池以及存储代码即可。

 import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph; import Bean.Article;
import Dao.IDao;
import Dao.UserDaoImpl; public class WordToSql { public static String pian;
public static String zhang; public static void readAndWriter(String fileName)throws Exception {
File file = new File(fileName);
try {
FileInputStream fis = new FileInputStream(file);
XWPFDocument xdoc = new XWPFDocument(fis);
List<XWPFParagraph>paras = xdoc.getParagraphs();
Article article = new Article();
IDao userDao = new UserDaoImpl();
boolean isFirst = true;
for(XWPFParagraph p:paras) { //遍历段落
String level = p.getStyleID();
System.out.println(level);
if(level==null)continue;
if(level.equals("12030")) { //篇的字号是小三:15
pian = p.getParagraphText();
article.setPian(pian);
}else if(level.equals("2201812")) { //章的字号是四号:14
if(!isFirst) {
userDao.add(article);
isFirst = true;
}
zhang = p.getParagraphText();
article.setZhang(zhang);
}else if(level.equals("3132020")) { //每个热词的字号是13
if(isFirst)isFirst = false;
else userDao.add(article);
String title = p.getParagraphText();
article.setTitle(title);
article.setContent(null);
}else if(level.equals("41")) { //段落的字号是小五:9
String content = p.getParagraphText();
if(article.getContent()!=null)content =article.getContent()+ content;
article.setContent(content);
}
}
fis.close();
}catch(Exception e) {
System.out.println("WordToSql:"+e.getMessage());
}
} }

在这一部分代码中,有一部分方法是POI的jar包自带的方法,如getParagraphs()和getStyleID()方法。

在博主推荐的那篇博客中,处理数据的方式也是根据字号进行,不过在博主使用后发现数据库中并没有导入数据,最后发现错误的原因是由于字号错误,于是在使用getStyleID()方法后,我将字号输出,最后发现这四种不同的字号。

isFirst的true和false将控制调用存储函数的时间点,可在仔细看过代码后,进行理解。

以下是存储函数的代码:

 import java.sql.Connection;
import java.sql.PreparedStatement; import Bean.Article;
import Util.DBUtil; public class UserDaoImpl implements IDao{ public void add(Article article) {
Connection con = DBUtil.getConnection();
PreparedStatement pre = null;
String sql = "insert into data(pian,zhang,title,context) values(?,?,?,?)";
try {
pre = con.prepareStatement(sql);
pre.setString(1,article.getPian());
pre.setString(2,article.getZhang());
pre.setString(3,article.getTitle());
pre.setString(4,article.getContent());
pre.executeUpdate();
System.out.println("添加成功!");
}catch(Exception e) {
System.out.println(e.getMessage());
}finally {
DBUtil.close(pre);
DBUtil.close(con);
}
} }

以上就是全部内容,如果并不能理解博主的方法,可以看一看博主推荐的博客。

如何把word文档导入到数据库中——java POI的更多相关文章

  1. 怎样把Word文档导入Excel表格

    Word是现在办公中的基础文件格式了,很多的内容我们都通过Word来进行编辑,那么当我们需要将Word文档里的信息导入到Excel里面的时候,我们应该怎样做呢?下面我们就一起来看一下吧. 操作步骤: ...

  2. 使用Word API打开Word文档 ASP.NET编程中常用到的27个函数集

    使用Word API(非Openxml)打开Word文档简单示例(必须安装Word) 首先需要引入参照Microsoft.Office.Interop.Word 代码示例如下: public void ...

  3. PHP实例:使用PHPExcel导入Excel2003文档和Excel2007文档到MySQL数据库中

    如果要使用phpExcelReader将Excel 数据导入到mysql 数据库,请读者点击这个文章查看. 使用phpExcelReader将Excel 数据导入到mysql 数据库. 下面我们介绍另 ...

  4. Asp.net操作Word文档,原来这么简单啊!

    引用Word对象库文件  具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为 ...

  5. JSP生成WORD文档,EXCEL文档及PDF文档的方法

    转自:https://www.jb51.net/article/73528.htm 本文实例讲述了JSP生成WORD文档,EXCEL文档及PDF文档的方法.分享给大家供大家参考,具体如下: 在web- ...

  6. Android中使用POI加载与显示word文档

    最近打算实现一个功能:在Android中加载显示Word文档,当然这里不是使用外部程序打开.查看一些资料后,打算采用poi实现,确定了以下实现思路: 将ftp中的word文档下载到本地. 调用poi将 ...

  7. java 处理word文档 (含图片,表格内容)

    因为本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求      处理Excel 能够用jxl        或者poi 2需求     用户在系统上填 ...

  8. C#(1)运用C#实现一键从Word文档转换TXT文本的功能

    有想直接从Word转TXT文本的可以看看,懒得复制粘贴的也可以使用下,方便而快捷!! 首先打开vs2012创建一个简单的form窗体: 里面主要的就是一个存放Word文档的button和一个执行的bu ...

  9. 合并两个word文档,保持样式不变

    一.需求说明 例如将封面插入到word正文上方 二.导入依赖 <dependency> <groupId>org.apache.poi</groupId> < ...

随机推荐

  1. UVA - 116 Unidirectional TSP (单向TSP)(dp---多段图的最短路)

    题意:给一个m行n列(m<=10, n<=100)的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列.要求经过的整数之和最小.第一行的上一行是最后一行,最后一 ...

  2. python 将数组中取某一值的元素全部替换为其他元素的方法

    这里的问题是在做House Price Prediction的时候遇到的,尝试对GarageArea做log转化,但是由于有些房子没有车库,所以GarageArea = 0,再通过log转化变成-in ...

  3. 2020牛客寒假算法基础集训营5 部分题解(BDEH)

    B: 牛牛战队的比赛地(二分做法)题意:二维平面给定n个点,在x轴找一点使得到n个点距离的最大值最小. 思路:我们可以将问题转化为在x轴找到一个圆心,使得该圆包含这n个点且半径最小,这样就变成了最小圆 ...

  4. 创建Oracle序列sequence

    create sequence SEQ_ID minvalue 1 maxvalue 99999999 start with 1 increment by 1 nocache order; 建解发器代 ...

  5. BZOJ 3170 [Tjoi2013]松鼠聚会

    题解:切比雪夫距离转化为曼哈顿距离 枚举源点,横纵坐标互不影响,分开考虑,前缀和优化 横纵分开考虑是一种解题思路 #include<iostream> #include<cstdio ...

  6. Mac OS/Windows好用软件分享

    下软件全部为破解版,仅供参考学习用,如涉及商业. 请支持正版!谢谢 全部为本人亲测过 看上哪个留言发给你!   直接全分享上来会有人居心不良!

  7. NABCD模型——星遇

    我们项目是个面向希望有新奇体验的用户的社交软件,致力于打造不一样的有趣的社交. 发表后一周预计用户量:1000人 N:(Need,需求) 目前主流社交软件由于时间原因体量越来越大,各种繁琐而不必要的功 ...

  8. re模块3

    #分组 () print(re.findall("(ad)/(vv)","adddad/vvdddddddddd")) print(re.findall(&qu ...

  9. 题解 P2622 【关灯问题II】

    题目 感觉大佬们的代码在读入上的处理比本蒟蒻优秀多了,于是,一个AFO蒟蒻弱弱地提出一下自己的看法 [分析] 首先,对于 \(n\) 那么小,肯定是状压啦 对于读入,本蒟蒻开了两个数组来储存每个按钮的 ...

  10. B. Odd Sum Segments CF(分割数组)

    题目地址 http://codeforces.com/contest/1196/problem/B B. Odd Sum Segments time limit per test 3 seconds ...