• 如何把word文档导入到数据库中——java POI


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

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

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

     1 import java.io.File;
     2 import java.io.FileInputStream;
     3 import java.util.HashMap;
     4 import java.util.List;
     5 import java.util.Map;
     6 
     7 import org.apache.poi.xwpf.usermodel.XWPFDocument;
     8 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
     9 
    10 import Bean.Article;
    11 import Dao.IDao;
    12 import Dao.UserDaoImpl;
    13 
    14 public class WordToSql {
    15 
    16     public static String pian;
    17     public static String zhang;
    18     
    19     public static void readAndWriter(String fileName)throws Exception {
    20         File file = new File(fileName);
    21         try {
    22             FileInputStream fis = new FileInputStream(file);
    23             XWPFDocument xdoc = new XWPFDocument(fis);
    24             List<XWPFParagraph>paras = xdoc.getParagraphs();
    25             Article article = new Article();
    26             IDao userDao = new UserDaoImpl();
    27             boolean isFirst = true;
    28             for(XWPFParagraph p:paras) {  //遍历段落
    29                 String level = p.getStyleID();
    30                 System.out.println(level);
    31                 if(level==null)continue;
    32                 if(level.equals("12030")) {   //篇的字号是小三:15
    33                     pian = p.getParagraphText();
    34                     article.setPian(pian);
    35                 }else if(level.equals("2201812")) {  //章的字号是四号:14
    36                     if(!isFirst) {
    37                         userDao.add(article);
    38                         isFirst = true;
    39                     }
    40                     zhang = p.getParagraphText();
    41                     article.setZhang(zhang);
    42                 }else if(level.equals("3132020")) {   //每个热词的字号是13
    43                     if(isFirst)isFirst = false;
    44                     else userDao.add(article);
    45                     String title = p.getParagraphText();
    46                     article.setTitle(title);
    47                     article.setContent(null);
    48                 }else if(level.equals("41")) {  //段落的字号是小五:9
    49                     String content = p.getParagraphText();
    50                     if(article.getContent()!=null)content =article.getContent()+ content;
    51                     article.setContent(content);
    52                 }
    53             }
    54             fis.close();
    55         }catch(Exception e) {
    56             System.out.println("WordToSql:"+e.getMessage());
    57         }
    58     }
    59     
    60 }

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

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

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

    以下是存储函数的代码:

     1 import java.sql.Connection;
     2 import java.sql.PreparedStatement;
     3 
     4 import Bean.Article;
     5 import Util.DBUtil;
     6 
     7 public class UserDaoImpl implements IDao{
     8 
     9     public void add(Article article) {
    10         Connection con = DBUtil.getConnection();
    11         PreparedStatement pre = null;
    12         String sql = "insert into data(pian,zhang,title,context) values(?,?,?,?)";
    13         try {
    14             pre = con.prepareStatement(sql);
    15             pre.setString(1,article.getPian());
    16             pre.setString(2,article.getZhang());
    17             pre.setString(3,article.getTitle());
    18             pre.setString(4,article.getContent());
    19             pre.executeUpdate();
    20             System.out.println("添加成功!");
    21         }catch(Exception e) {
    22             System.out.println(e.getMessage());
    23         }finally {
    24             DBUtil.close(pre);
    25             DBUtil.close(con);
    26         }
    27     }
    28     
    29 }

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

  • 相关阅读:
    设计模式--单例模式Singleton
    CSS选择器
    操作数据表
    HTML
    Shell学习
    LINUX常用命令
    多线程-互斥变量
    多线程-临界区
    每天一个linux命令:file(11)
    JavaScript设计模式小抄集(持续更新)
  • 原文地址:https://www.cnblogs.com/CHAHA123/p/10600999.html
Copyright © 2020-2023  润新知