POI操作WORD

来源:互联网 发布:linux安装不了httpd 编辑:程序博客网 时间:2024/05/29 09:12

POI操作WORD

 

POI操作word有很多局限性并不完善,所以用它的一个扩展包

1、环境支持

    1.1 添加poi支持:包下载地址http://www.apache.org/dyn/closer.cgi/poi/release/

     1.2 POI对Excel文件的读取操作比较方便,POI还提供对Word的DOC格式文件的读取。但在它的发行版本中没有发布对Word支持的模块,需要另外下载一个POI的扩展的Jar包。下载地址为http://www.ibiblio.org/maven2/org/textmining/tm-extractors/0.4/ 下载extractors-0.4_zip这个文件

下面给几个例子看看

写的不好还希望大家多提意见

testmining官方网站http://www.textmining.org/

package com.ray.poi.util;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.textmining.text.extraction.WordExtractor;

 


/**
 * 读写doc
 * @author wangzonghao
 *
 */
public class POIWordUtil {
 /**
  * 读入doc
  * @param doc
  * @return
  * @throws Exception
  */
 public static String readDoc(String doc) throws Exception {
     // 创建输入流读取DOC文件
      FileInputStream in = new FileInputStream(new File(doc));
      WordExtractor extractor = null;
      String text = null;
     // 创建WordExtractor
      extractor = new WordExtractor();
     // 对DOC文件进行提取
      text = extractor.extractText(in);
     return text;
 }
 /**
  * 写出doc
  * @param path
  * @param content
  * @return
  */
 public static boolean writeDoc(String path, String content) {
     boolean w = false;
    try {

    // byte b[] = content.getBytes("ISO-8859-1");
    byte b[] = content.getBytes();

    ByteArrayInputStream bais = new ByteArrayInputStream(b);

    POIFSFileSystem fs = new POIFSFileSystem();
    DirectoryEntry directory = fs.getRoot();

    DocumentEntry de = directory.createDocument("WordDocument", bais);

    FileOutputStream ostream = new FileOutputStream(path);

    fs.writeFilesystem(ostream);

    bais.close();
    ostream.close();

    } catch (IOException e) {
    e.printStackTrace();
    }
    return w;
    }

 

}
测试

package com.ray.poi.util;

import junit.framework.TestCase;

public class POIUtilTest extends TestCase {

 public void testReadDoc() {
  try{
            String text = POIWordUtil.readDoc("E:/work_space/poi/com/ray/poi/util/demo.doc");
            System.out.println(text);
         }catch(Exception e){
             e.printStackTrace();
         }

 }

 public void testWriteDoc() {
     String wr;
  try {
   wr = POIWordUtil.readDoc("E:/work_space/poi/com/ray/poi/util/demo.doc");

    boolean b = POIWordUtil.writeDoc("c://demo.doc",wr);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

}

原创粉丝点击