zoukankan      html  css  js  c++  java
  • 利用POI工具读取word文档并将数据存储到sqlserver数据库中

    今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下:

    package word;
    
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.CharacterRun;
    import org.apache.poi.hwpf.usermodel.Paragraph;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    
    import dao.WordDao;
    
    
    public class TikaExtraction {
    
    
        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
            
                //List<Policy_content> list = new ArrayList<>();
                InputStream is;
                try {
                    is = new FileInputStream(new File("H:\大数据\大数据技术应用大作业-1\河北省信息技术手册.doc"));
                       
                        
                POIFSFileSystem fs = new POIFSFileSystem(is);
                HWPFDocument document = new HWPFDocument(fs);
                Range range = document.getRange();
                String title = null;int item=0;
                for(int i=0;i<range.numParagraphs();i++) {//通过循环读取每一段
                    Paragraph para1 = range.getParagraph(i);    
                    CharacterRun run1=para1.getCharacterRun(0);  //获取每一段的属性     
                    item = i;//item用来记录当前位置             
                    if(run1.getFontSize()==26) {//如果字体符合,说明该段落是小标题
                         String context = "";
                        title = para1.text().trim().replaceAll("
    ", "");//取这一段为当前的title值
                        
                          for(int j=item+1;j<range.numParagraphs();j++) {//从当前段的下一段开始,查找所有解释段落,
                             
                              Paragraph para2 = range.getParagraph(j);
                              CharacterRun run2=para2.getCharacterRun(0);
                             
                              if(run2.getFontSize()==18) {//如果字体符合,说明该段落是解释段落之一
                                  
                                  context = context+para2.text().trim().replaceAll("
    ", "");//把解释段落合并成一个字符串
                                
                              }
                              if(run2.getFontSize()==26) {//如果字体为26,说明到了下一个小标题,则退出循环
                                  break;
                              }
                          }
                          //以下为插入数据库方法
                         WordDao worddao = new WordDao();
                         worddao.addData(title, context);
                           
                    }
                    
                  
                }
               
                
               
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
        }
    }

    代码解释注释上已经写了。

    一下是我找到的对于POI工具的介绍:

    使用POI读写Word doc文件

           Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用HWPFDocument来表示一个word doc文档。在HWPFDocument里面有这么几个概念:

     Range:它表示一个范围,这个范围可以是整个文档,也可以是里面的某一小节(Section),也可以是某一个段落(Paragraph),还可以是拥有共同属性的一段文本(CharacterRun)。

      Section:word文档的一个小节,一个word文档可以由多个小节构成。

      Paragraph:word文档的一个段落,一个小节可以由多个段落构成。

      CharacterRun:具有相同属性的一段文本,一个段落可以由多个CharacterRun组成。

      Table:一个表格。

      TableRow:表格对应的行。

      TableCell:表格对应的单元格。

           Section、Paragraph、CharacterRun和Table都继承自Range。

    在我自己的代码中主要用的就是一些POI工具的基础知识,利用range获取word的所有段落,用过循环遍历所有段,再利用characterRun判断字体大小获取标题和解释的文字。



    转载于:https://www.cnblogs.com/zhangliqiangvictory/p/10569597.html

  • 相关阅读:
    iOS集成ijkplayer视频直播框架,遇到的bug和坑...
    push notification获取device token
    ios xcode Code signing failed 解决方案
    ios 返回指定导航控制器
    ios git 终端提交
    mysql问题集合
    mysql 备份和恢复
    cacti 异常问题
    硬盘各项检测
    LVS DR模式(直接路由模式)
  • 原文地址:https://www.cnblogs.com/twodog/p/12135017.html
Copyright © 2011-2022 走看看