用poi解析word 总结

来源:互联网 发布:数据分析excel面试题 编辑:程序博客网 时间:2024/06/13 11:33

  1. 获得word的文本内容 无任何格式 样式 图片
  try{ 
    FileInputStream fis = new FileInputStream(new File("F://test.doc"));
   WordExtractor ex = new WordExtractor(fis);
  String text2003 = ex.getText();
  System.out.println("word的内容信息"+text2003);
  } catch (Exception e) {
   e.printStackTrace();
   System.out.println("解析word有错!");
  }
  2. 获得word的段落
       File file = new File("F://test.doc");
     try {
      FileInputStream fis = new FileInputStream(file); 
      WordExtractor wordExtractor = new WordExtractor(fis);
      StringBuffer sb = new StringBuffer();
      System.out.println("【 使用getText()方法提取的Word文件的内容如下所示:】");
      String[] paragraph = wordExtractor.getParagraphText();
      System.out.println("该Word文件共有"+paragraph.length+"段。");
      for(int i=0;i<paragraph.length;i++){
       System.out.println("< 第 "+(i+1)+" 段的内容为 >");
       System.out.println(paragraph[i]);
       if(i==0){
         sb.append("<center>");
          sb.append(paragraph[i]);
          sb.append("</center><br>");
       }
       else{
        sb.append("&nbsp;&nbsp;&nbsp;&nbsp;");
        sb.append(paragraph[i]);
        System.out.println(paragraph[i].hashCode());
        sb.append("<br>");
       }
     }
      System.out.println(sb.toString());
     } catch (FileNotFoundException e) {
      e.printStackTrace();
     } catch (IOException e) {
     e.printStackTrace();
  }
  3.取得word内容的字体样式(只能一个一个字符的取字体的样式  效率将是一个大问题)
     File file = new File("F://test.doc");
    try {
  int flg = 0;
  String str="";
     FileInputStream fis = new FileInputStream(file);
     HWPFDocument doc = new HWPFDocument(fis);
     StringBuffer sb = new StringBuffer();
     sb.append("<center>");
     int length = doc.characterLength();
      for(int m =0;m<length-1;m++){
       Range range = new Range(m,m+1,doc);
         for(int j=0;j<range.numCharacterRuns();j++){
           CharacterRun cr=range.getCharacterRun(j);
           System.out.println(cr.getPicOffset()+" "+cr.getColor()+" "+cr.getFontName()+" "+cr.getFontSize()+" ");
          
           if(range.text().hashCode() != 13){
              sb.append("<font color='");
              sb.append(cr.getColor());
              sb.append("' style='font-size:");
              sb.append(cr.getFontSize());
              sb.append("pt;font-family:");
              sb.append(cr.getFontName());
              sb.append("'>");
              sb.append(range.text());
              sb.append("</font>");
            //str = str + "<font color='"+cr.getColor()+"' style='font-size:"+cr.getFontSize()+"pt;font-family:"+cr.getFontName()+"'>"+range.text()+"</font>";
           }
           else{
            if(flg == 0){
             sb.append("</center><br>&nbsp;&nbsp;&nbsp;&nbsp;");//第一个回车字符 结束---- 标题
             ++flg;
            }
            else{
             sb.append("<br>&nbsp;&nbsp;&nbsp;&nbsp;");
            
             //str = "&nbsp;&nbsp;&nbsp;&nbsp;" + str + "<br>";
            }
           }
          
         }
      }
     System.out.println(sb.toString());
    } catch (FileNotFoundException e) {
     e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
 }
 4.读取word图片
    HWPFDocument docA=null;
  try {
   docA = new HWPFDocument(new FileInputStream("F://test.doc"));
  } catch (FileNotFoundException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  } catch (IOException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
    List picA=docA.getPicturesTable().getAllPictures();//把word中所有的图片读到List中 怎么用看自己
    Picture p1=(Picture)picA.get(0);
    try {
    p1.writeImageContent(new FileOutputStream("F://aa.jpg")); //把读出来的图片写进aa.jpg
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace(); } 
     
    String s1=p1.suggestFullFileName();
    String s2=p1.suggestFileExtension();
    System.out.println("------"+s1+"-----"+s2);
    System.out.println(p1.getAspectRatioX()+" "+p1.getAspectRatioY());
 } 
 
 图片读出来了 怎么判断图片的位置  
 
        api上的一个方法 经过测试的 是对的
       
        使用CharacterRun 的 getPicOffset()方法 如果不等于-1 表示 是图片

 

原创粉丝点击