如何把word文档导入到数据库中——java POI
本文方法借鉴于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的更多相关文章
- 怎样把Word文档导入Excel表格
Word是现在办公中的基础文件格式了,很多的内容我们都通过Word来进行编辑,那么当我们需要将Word文档里的信息导入到Excel里面的时候,我们应该怎样做呢?下面我们就一起来看一下吧. 操作步骤: ...
- 使用Word API打开Word文档 ASP.NET编程中常用到的27个函数集
使用Word API(非Openxml)打开Word文档简单示例(必须安装Word) 首先需要引入参照Microsoft.Office.Interop.Word 代码示例如下: public void ...
- PHP实例:使用PHPExcel导入Excel2003文档和Excel2007文档到MySQL数据库中
如果要使用phpExcelReader将Excel 数据导入到mysql 数据库,请读者点击这个文章查看. 使用phpExcelReader将Excel 数据导入到mysql 数据库. 下面我们介绍另 ...
- Asp.net操作Word文档,原来这么简单啊!
引用Word对象库文件 具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为 ...
- JSP生成WORD文档,EXCEL文档及PDF文档的方法
转自:https://www.jb51.net/article/73528.htm 本文实例讲述了JSP生成WORD文档,EXCEL文档及PDF文档的方法.分享给大家供大家参考,具体如下: 在web- ...
- Android中使用POI加载与显示word文档
最近打算实现一个功能:在Android中加载显示Word文档,当然这里不是使用外部程序打开.查看一些资料后,打算采用poi实现,确定了以下实现思路: 将ftp中的word文档下载到本地. 调用poi将 ...
- java 处理word文档 (含图片,表格内容)
因为本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求 处理Excel 能够用jxl 或者poi 2需求 用户在系统上填 ...
- C#(1)运用C#实现一键从Word文档转换TXT文本的功能
有想直接从Word转TXT文本的可以看看,懒得复制粘贴的也可以使用下,方便而快捷!! 首先打开vs2012创建一个简单的form窗体: 里面主要的就是一个存放Word文档的button和一个执行的bu ...
- 合并两个word文档,保持样式不变
一.需求说明 例如将封面插入到word正文上方 二.导入依赖 <dependency> <groupId>org.apache.poi</groupId> < ...
随机推荐
- UVA - 1614 Hell on the Markets(奇怪的股市)(贪心)
题意:输入一个长度为n(n<=100000)的序列a,满足1<=ai<=i,要求确定每个数的正负号,使得所有数的总和为0. 分析: 1.若总和为0,则未加符号之前,所有数之和必为偶数 ...
- 洛谷 P2697 宝石串
题目传送门 解题思路: 将红色的设置为-1,绿色的为1,统计前缀和sum,如果sum[i] == sum[j],则说明i~j是一个稳定的区间 因为答案要求最大,所以我们要记录每个sum值的最左端点(也 ...
- Vue 获取时间戳返回自定义时间格式
直接在Vue全局函数定义: Vue.prototype.padLeftZero = function(str) { return ('00' + str).substr(str.length); }; ...
- CF 767#
A题的话,用一个priority_queue维护一下,直到最大的符合要求才出来,,(一开始记错了,,2333写成了小根堆...) #include<bits/stdc++.h> #defi ...
- 【STM32H7教程】第50章 STM32H7的LCD控制器LTDC基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第50章 STM32H7的LCD控制器LTDC基础 ...
- (一)IOC基础推导及理论
环境准备:见java环境搭建,新建maven项目 1.写一个UserDao接口 public interface UserDao { public void getUser(); } 2.再写Dao的 ...
- 强制浏览器以IE8版本运行
做为一个开发人员,经常被要求前端页面兼容ie8及以上,所以有时候我们希望ie默认以ie8的版本打开我们的页面. 1.“文档模式”: 在html页面中加入类似下面的代码: <meta http-e ...
- POJ 1887:Testing the CATCHER 求递减序列的最大值
Testing the CATCHER Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16131 Accepted: 5 ...
- Thread--CountDownLatch & CyclicBarrier
参考:http://www.importnew.com/21889.html CountDownLatch countDown() 方法执行完只是计数器减一, 并不会阻塞当前运行线程的的后续代码执行. ...
- AJAX(阿贾克斯)的简单应用
1.ajax 对象的属性说明(常用的) (1)open(method,url,boolean);创建请求,method :填请求类型(get post),url :请求的地址, boolean:tru ...