想通过poi输出一个doc文档
想对word的一些格式进行定制
并且可以插入书签
并可以生成目录请问各位如何处理???
poi可以实现吗???

解决方案 »

  1.   

    应该是可以的,你看看这篇文章:
    http://blog.csdn.net/wzwfly/archive/2007/06/09/1645046.aspx
      

  2.   

    我没处理过word,但是处理过excel,用的是jxl.jar
    也曾经查过poi的资料,功能很强大,对word和ecexl的支持都很好poi完全可以实现你的要求
      

  3.   

      import   java.io.*;  
      import   java.util.*;  
       
      import   org.apache.poi.poifs.filesystem.*;  
      import   org.apache.poi.util.*;  
      import   wfc.service.log.*;  
      import   wfc.service.util.*;  
       
      public   class   WordParser  
              extends   IParser   {  
       
          /**  
            *   解析文档,   获得文档正文  
            *   @param   content   原始文档内容  
            *   @return   文档正文  
            */  
          public   String   parseFromContent(String   content)   {  
              InputStream   stream   =   new   ByteArrayInputStream(content.getBytes());  
              return   parse(stream);  
          }  
       
          /**  
            *   解析文档,   获得文档正文  
            *   @param   filename   文件名称  
            *   @return   文档正文  
            */  
          public   String   parseFromFile(String   filename)   {  
              try   {  
                  InputStream   stream   =   new   FileInputStream(filename);  
                  return   parse(stream);  
              }  
              catch   (FileNotFoundException   ex)   {  
                  Log.error(ex);  
                  return   null;  
              }  
          }  
       
          private   String   parse(InputStream   stream)   {  
              try   {  
                  POIFSFileSystem   fs   =   new   POIFSFileSystem(stream);  
                  DirectoryEntry   rootEntry   =   fs.getRoot();  
                  StringWriter   writer   =   new   StringWriter();  
                  recurse(rootEntry,   writer);  
                  return   new   String(writer.getBuffer());  
              }  
              catch   (IOException   ex)   {  
                  Log.error(ex);  
                  return   null;  
              }  
          }  
       
          private   void   recurse(Entry   entry,   StringWriter   writer)   throws   IOException   {  
              if   (entry   instanceof   DirectoryEntry)   {  
                  DirectoryEntry   dirEntry   =   (DirectoryEntry)   entry;  
                  for   (Iterator   iter   =   dirEntry.getEntries();   iter.hasNext();   )   {  
                      Entry   e   =   (Entry)   iter.next();  
                      recurse(e,   writer);  
                  }  
              }  
              else   if   (entry   instanceof   DocumentEntry   &&  
                                "WordDocument".equals(entry.getName()))   {  
                  DocumentEntry   docEntry   =   (DocumentEntry)   entry;  
                  DocumentInputStream   dis   =   new   DocumentInputStream(docEntry);  
                  byte[]   by   =   StreamHelper.toByteArray(dis);  
                  writer.write(StringUtil.getFromUnicodeHigh(by));  
              }  
          }  
       
      }