如何用java POI将word中的内容导入到mysql数据库中
由于作业需要,要求我们将word文档中的数据直接导入到mysql中,在网上找了很常时间,终于将其解决。
由于比较初级,所以处理的word文档是那种比较规范的那种,条例比较清晰,设计的思路也比较简单,就是根据段落的内容判断每一段是标题还是内容,然后读完一条记录后直接像数据库中添加,知道最后都添加完成。代码如下:
本项目的结构如截图所示:
其中Bean.java里边是一个实体类,我将每一个新闻热词的标题,内容,分类都封装在一个类中,Dao.java是实现向数据库中插入数据的函数,DBUtil.java是链接数据库,WordToSql.java里边是具体的实现代码,test.java是一个测试类。
注:本人用的maven项目,需要导入一下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.8</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.8</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
Bean.java
package com.chry.WordToSql; public class Bean {
public String pian;
public String zhang;
public String title;
public String content;
public Bean(String pian, String zhang, String title, String content) {
super();
this.pian = pian;
this.zhang = zhang;
this.title = title;
this.content = content;
}
public String getPian() {
return pian;
}
public String getZhang() {
return zhang;
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
public void setPian(String pian) {
this.pian = pian;
}
public void setZhang(String zhang) {
this.zhang = zhang;
}
public void setTitle(String title) {
this.title = title;
}
public void setContent(String content) {
this.content = content;
} public Bean() { }
@Override
public String toString() {
return "Bean [pian=" + pian + ", zhang=" + zhang + ", title=" + title + ", content=" + content + "]";
}
}
Dao.java
package com.chry.WordToSql; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; public class Dao { public void add(Bean bean) {
Connection connection = DBUtil.getConnection();
PreparedStatement preparedStatement = null; String sql = "insert into data (pian,zhang,title,content) value (?,?,?,?)";
try {
preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, bean.getPian());
preparedStatement.setString(2, bean.getZhang());
preparedStatement.setString(3, bean.getTitle());
preparedStatement.setString(4, bean.getContent());
preparedStatement.executeUpdate();
System.out.println("插入成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
} }
DBUtil.java
package com.chry.WordToSql; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class DBUtil {
public static Connection getConnection(){ try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
// TODO �Զ����ɵ� catch ��
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO �Զ����ɵ� catch ��
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO �Զ����ɵ� catch ��
e.printStackTrace();
}
String user="root";
String password="root";
String url="jdbc:mysql://localhost:3306/bigdata";
Connection connection=null;
try {
connection=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO �Զ����ɵ� catch ��
e.printStackTrace();
}
return connection; } public static void close(Connection connection)
{
try {
if(connection!=null)
{
connection.close();
} } catch (SQLException e) {
// TODO �Զ����ɵ� catch ��
e.printStackTrace();
} }
public static void close(PreparedStatement preparedStatement)
{
try {
if(preparedStatement!=null)
{
preparedStatement.close();
} } catch (SQLException e) {
// TODO �Զ����ɵ� catch ��
e.printStackTrace();
} } public static void close(ResultSet resultSet)
{
try {
if(resultSet!=null)
{
resultSet.close();
} } catch (SQLException e) {
// TODO �Զ����ɵ� catch ��
e.printStackTrace();
} } }
注:链接数据库的用户名,密码,还有数据库的名称都要根据的情况进行修改。
WordToSql.java
package com.chry.WordToSql; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List; import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph; public class WordToSql { public static String pian;
public static String zhang; public static void readAndWriterTest4() throws IOException {
File file = new File("D:\\2.docx");
String str = "";
try {
FileInputStream fis = new FileInputStream(file);
XWPFDocument xdoc = new XWPFDocument(fis);
List<XWPFParagraph> paras=xdoc.getParagraphs();
Bean bean = new Bean();
for(XWPFParagraph p : paras)//遍历段落
{
//获取段落的级别
String jibie = p.getStyleID(); if(jibie!=null) {
if(jibie.equals("8")) {
pian = p.getParagraphText();
bean.setPian(pian);
}else if(jibie.equals("9")) {
zhang = p.getParagraphText();
bean.setZhang(zhang); }else if(jibie.equals("10")){ //判断的段落为标题
//System.out.println(bean.toString());
//写入数据库
Dao dao = new Dao();
dao.add(bean);
bean.setContent("");
String title = p.getParagraphText();
bean.setTitle(title);
}else { //判断段落为正文
String content = p.getParagraphText();
if(bean.getContent()!=null) {
content = content + bean.getContent();
}
bean.setContent(content);
}
} }
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) throws IOException {
readAndWriterTest4(); }
}
至此,便可以将一片word文档完整的导入数据库中,后续会进一步研究如何将更加复杂的word文档导入数据库中。
注:在word文档中,每个人的字号的级别都不太一样,所以可以先写一个测试函数,输出每个段落的字号,再去修改正式导入数据库中的代码,本博客是经过修正之后的。
如有问题,请留言。
如何用java POI将word中的内容导入到mysql数据库中的更多相关文章
- 用JDBC把Excel中的数据导入到Mysql数据库中
步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...
- Access数据库导入到mysql数据库中
做项目时需要查询手机号归属地的,用网上提供的接口,耗时太长,反应慢,只能自己在网上搜了一个包含所有手机号归属地的Access数据库,导入到自己的mysql数据库中 Access数据库导入到mysql中 ...
- Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
功能:在textbox中输入内容,动态从数据库模糊查询显示到下拉框中,以供选择 1.建立一aspx页面,html代码 <HTML> <HEAD> <title>We ...
- 用ttBulkCp把excel中的数据导入到timesten数据库中
最近要做数据预处理,需要用到数据库.而且是以前从来没听说过的TimesTen. 首要目标是要把Excel里的数据,导入到TimesTen数据库中.而TimesTen在win10里用不了,于是我就在虚拟 ...
- 如何将Excel导入到Mysql数据库中
1.在mysql中建一张和Excel结构一样的表,或者修改excel信息,将excel的结构与mysql中table保持一致,包括字段名称. 2.利用mysql客户端工具navicat进行导入. 步骤 ...
- Oracle中的数据迁移到Mysql数据库中的方式Navicat premium工具
1.安装 Navicat premium工具 2.破解 Navicat premium工具 3.连接需要相互迁移的两个库Mysql和Oracle(可以是远程的或者本机的数据库都是可以的) 4.连接上之 ...
- c#.net Excel中的数据导入到SQL数据库中
/// <summary> /// 从Excel 导入学生 /// </summary> /// <param name=&qu ...
- mysql数据库使用sql命令窗口查询的数据,改成sql语句导入到mysql数据库中
1.查询语句为select * from t_table;导出的数据格式如下: 2.将数据文本备份,然后使用NOTEPAD++打开,然后只拷贝数据到新建txt中,然后进行如下替换: 1)将“ | ”分 ...
- 把excel中的数据导入到Oracle数据库中
从事工作以来,数据库一直使用oracle,却不知道excel导入oracle,今天看了一篇文章,分享给大家,希望对大家有用. https://jingyan.baidu.com/article/0f5 ...
随机推荐
- linux下redis4.0.2集群部署(利用原生命令)
一.部署架构如下 每台服务器准备2个节点,一主一从,主节点为另外两台其中一台的主,从节点为另外两台其中一台的从. 二.准备6个节点配置文件 在172.28.18.75上操作 cd /etc/redis ...
- Java虚拟机 垃圾收集器与内存分配策略
说起GC,我们要思考的主要有三件事 哪些内存需要回收 那些已经“死去”的对象,那么哪些对象“死”,哪些对象“活”呢,有个简单的办法 引用计数法,但是没法解决循环依赖问题 所以Java虚拟机采用的是可达 ...
- windows、Linux同步外网NTP服务器时间
配置 Windows 时间服务以使用外部时间源 要将内部时间服务器配置为与外部时间源同步,请使用以下方法之一: 软件自动配置 Windows 时间服务 若要自动修复此问题,请单击“下载”按钮. 在“ ...
- 167. Two Sum II - Input array is sorted (Array)
Given an array of integers that is already sorted in ascending order, find two numbers such that the ...
- 大数据学习笔记2 - 分布式文件系统HDFS(待续)
分布式文件系统结构 分布式文件系统是一种通过网络实现文件在多台主机上进行分布式存储的文件系统,采用C/S模式实现文件系统数据访问,目前广泛应用的分布式文件系统主要包括GFS和HDFS,后者是前者的开源 ...
- mybatis中查询使用#{}和${}的区别
${}中的变量什么值,就会简单的替代变量,不会做处理 比如delete * from tb_label where name=${labelname} 如果labelname的值是 something ...
- python note 07 集合
1.删除特例 lis = [11,22,33,44,55] for i in range(len(lis)): print(i) del lis[i] print(lis) #每删除链表中一个值链表就 ...
- [leetcode]86. Partition List划分链表
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- python发送邮箱
一.Python发送邮件 import smtplib from email.mime.text import MIMEText def send(email_to,title,content): m ...
- 别人的Linux私房菜(6)文件权限与目录配置
账号与一般身份用户存放在/etc/passwd文件中 个人密码存放在/etc/shadow文件中 Linux所有组名存放在/etc/group中 ls -al查看所有信息并显示权限等 文件权限的10字 ...