poi导入word到mysql_如何用java POI将word中的内容导入到mysql数据库中

本文介绍了如何使用Java的Apache POI库将结构化的Word文档内容读取并导入到MySQL数据库中。通过创建Bean对象来存储数据,实现 Dao 类处理数据库插入,利用DBUtil连接和关闭数据库,最终将Word文档中的标题、内容等信息按段落级别解析并存入数据库。
摘要由CSDN通过智能技术生成

由于作业需要,要求我们将word文档中的数据直接导入到mysql中,在网上找了很常时间,终于将其解决。

由于比较初级,所以处理的word文档是那种比较规范的那种,条例比较清晰,设计的思路也比较简单,就是根据段落的内容判断每一段是标题还是内容,然后读完一条记录后直接像数据库中添加,知道最后都添加完成。代码如下:

本项目的结构如截图所示:

484f572ab9d4b308d0ea6aa3ca30c3fe.png

其中Bean.java里边是一个实体类,我将每一个新闻热词的标题,内容,分类都封装在一个类中,Dao.java是实现向数据库中插入数据的函数,DBUtil.java是链接数据库,WordToSql.java里边是具体的实现代码,test.java是一个测试类。

注:本人用的maven项目,需要导入一下依赖:

org.apache.poi

poi-ooxml

3.8

org.apache.poi

poi-scratchpad

3.8

mysql

mysql-connector-java

5.1.38

Bean.java

packagecom.chry.WordToSql;public classBean {publicString pian;publicString zhang;publicString title;publicString content;publicBean(String pian, String zhang, String title, String content) {super();this.pian =pian;this.zhang =zhang;this.title =title;this.content =content;

}publicString getPian() {returnpian;

}publicString getZhang() {returnzhang;

}publicString getTitle() {returntitle;

}publicString getContent() {returncontent;

}public voidsetPian(String pian) {this.pian =pian;

}public voidsetZhang(String zhang) {this.zhang =zhang;

}public voidsetTitle(String title) {this.title =title;

}public voidsetContent(String content) {this.content =content;

}publicBean() {

}

@OverridepublicString toString() {return "Bean [pian=" + pian + ", zhang=" + zhang + ", title=" + title + ", content=" + content + "]";

}

}

Dao.java

packagecom.chry.WordToSql;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;public classDao {public voidadd(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

packagecom.chry.WordToSql;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;public classDBUtil {public staticConnection 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();

}returnconnection;

}public static voidclose(Connection connection)

{try{if(connection!=null)

{

connection.close();

}

}catch(SQLException e) {//TODO �Զ����ɵ� catch ��

e.printStackTrace();

}

}public static voidclose(PreparedStatement preparedStatement)

{try{if(preparedStatement!=null)

{

preparedStatement.close();

}

}catch(SQLException e) {//TODO �Զ����ɵ� catch ��

e.printStackTrace();

}

}public static voidclose(ResultSet resultSet)

{try{if(resultSet!=null)

{

resultSet.close();

}

}catch(SQLException e) {//TODO �Զ����ɵ� catch ��

e.printStackTrace();

}

}

}

注:链接数据库的用户名,密码,还有数据库的名称都要根据的情况进行修改。

WordToSql.java

packagecom.chry.WordToSql;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.util.List;importorg.apache.poi.xwpf.extractor.XWPFWordExtractor;importorg.apache.poi.xwpf.usermodel.XWPFDocument;importorg.apache.poi.xwpf.usermodel.XWPFParagraph;public classWordToSql {public staticString pian;public staticString zhang;public static void readAndWriterTest4() throwsIOException {

File file= new File("D:\2.docx");

String str= "";try{

FileInputStream fis= newFileInputStream(file);

XWPFDocument xdoc= newXWPFDocument(fis);

List paras=xdoc.getParagraphs();

Bean bean= newBean();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 = newDao();

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) throwsIOException {

readAndWriterTest4();

}

}

至此,便可以将一片word文档完整的导入数据库中,后续会进一步研究如何将更加复杂的word文档导入数据库中。

注:在word文档中,每个人的字号的级别都不太一样,所以可以先写一个测试函数,输出每个段落的字号,再去修改正式导入数据库中的代码,本博客是经过修正之后的。

如有问题,请留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值