`
rwjavagbl
  • 浏览: 13946 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

poi实现word文档的导入(针对.doc .docx rtf)

阅读更多
public void importUnitInfo() throws IOException{
   String filePath =  this.getHttpServletRequest().getParameter("docWord");
   File file = new File(filePath);
   POIFSFileSystem pfs = null;
   List<String> list = new ArrayList<String>(); 
   organization = new Organization();
   String info="";
   Boolean sign =true;
      FileInputStream ins = new FileInputStream(filePath);// 载入文档 
//    WordExtractor extractor = new WordExtractor(ins);
//    // 对DOC文件进行提取
//    String text = extractor.getText();
   XWPFWordExtractor docx = null;
   int index = filePath.lastIndexOf(".");
   String fileType =filePath.substring(index);
   try {
   if(fileType.equals(".docx")){
  
   docx = new XWPFWordExtractor(POIXMLDocument.openPackage(filePath));//对docx文档的操作
 
   }else if(fileType.equals(".doc")){
  
   pfs = new POIFSFileSystem(ins); // 对doc文档的操作
   }
   } catch (Exception e) {
   if(pfs==null&&docx==null){
   sign=false;
  
   }
   }
   if(sign==true){//导入的文件格式是word(doc或者docx)
   try {
  if(fileType.equals(".doc")){
   HWPFDocument hwpf = new HWPFDocument(pfs); 
   Range range = hwpf.getRange();// 得到文档的读取范围
   TableIterator it = new TableIterator(range);// 迭代文档中的表格
       String cellString="";
   if (it.hasNext()) { 
          TableRow tr = null; 
          TableCell td = null; 
          org.apache.poi.hwpf.usermodel.Paragraph para = null; 
          org.apache.poi.hwpf.usermodel.Table tb =  it.next(); 
          // 迭代行,从第1行开始  
         for (int i = 0; i < tb.numRows(); i++) { 
             tr = tb.getRow(i); 
             for (int j = 0; j < tr.numCells(); j++) { 
                 td = tr.getCell(j);// 取得单元格  
                  // 取得单元格的内容  
                  for (int k = 0; k < td.numParagraphs(); k++) { 
                     para = td.getParagraph(k); 
                      cellString = para.text();
                      boolean flag = true;
                     
                      if (cellString != null && cellString.compareTo("") != 0&&flag==true) { 
                         // 如果不trim,取出的内容后会有一个乱码字符  
                             cellString = cellString.trim(); 
                         } 
                          info+= cellString; 
                      } 
                  } 

              } 
          }
  }else if(fileType.equals(".docx")){
  info = docx.getText();
  info =info.replaceAll("\n", "");
  info = info.replaceAll("\r", "");

  }
    info = info.replaceAll("\\s*", "");
  .......(获得word中的内容(info)后,对具体内容操作很简单就不列出了)  this.getHttpServletResponse().getWriter().write("success");
   } catch (Exception e) {
   this.getHttpServletResponse().getWriter().write("fail");
}
}else {//导入的文件是rtf格式
try {
RTFEditorKit rtf = new RTFEditorKit();
DefaultStyledDocument styledDoc = new DefaultStyledDocument();
FileInputStream in = new FileInputStream(filePath);
rtf.read(in, styledDoc, 0);
info = new String(styledDoc.getText(0,styledDoc.getLength()).getBytes("GBK")); //提取文本,读取中文需要使用ISO8859_1编码,否则会出现乱码
info = info.replaceAll("\n", "");
info = info.replaceAll("\\s*", "");
.......(获得word中的内容(info)后,对具体内容操作很简单就不列出了)  [/color][color=black][size=xx-small][/size] this.getHttpServletResponse().getWriter().write("success");
} catch (IOException e) {
this.getHttpServletResponse().getWriter().write("fail");
e.printStackTrace();
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
分享到:
评论

相关推荐

    Java Word控件-Free Spire.Doc for Java_2.0.0

    首先,Free Spire.Doc for Java支持广泛的Word文档格式,包括.doc、.docx、.rtf、.html等,这使得它能够处理各种来源的Word文件。利用此库,开发者可以轻松实现以下功能: 1. **创建和编辑文档**:从头创建新的Word...

    java word(doc,docx,rtf)转为pdf

    - **读取Word文档**:使用Apache POI的HSSFWorkbook或XWPFDocument类读取.doc或.docx文件,HWPFDocument用于处理RTF文件。 - **解析内容**:从Word文档中提取文本、段落样式、图片等信息。 - **创建PDF**:使用iText...

    java读取word文档.doc

    本示例主要探讨如何使用 Java 处理 RTF(Rich Text Format)文档,而不是直接读取 .doc 或 .docx 文件。这是因为直接读取 Word 文件(尤其是 .docx 格式)在某些库(如 Apache POI)中可能存在限制,如格式丢失或不...

    java生成rtf文档,跟word文档差不多

    在Java中,除了使用特定库如`srw.jar`外,还可以使用Apache POI库来操作Word文档(.doc/.docx)。POI提供了一个强大的API,允许直接操作Word文档的内部结构,包括段落、样式、表格和图像。然而,这通常比生成RTF文档...

    java实现word合并(poi,jacob,docx4j,plutext)及文件格式转换全家桶

    word合并全家桶,包括横页和竖页兼容合并,里面包含使用文件格式转换,rtf转换为标准的word格式或者其他类型转换,jacob合并word案例及jar包,docx4j合并word案例及jar包,还有poi合并,以及Plutext-Enterprise-3.3.0.6...

    跨平台的word(doc,docx,rtf)插入图片功能

    跨平台支持doc,docx,rtf的图片插入,不是生成文档,而是在现有文档上追加后生成新文档。 另外需要安装OpenOffic,并且启动服务,详情见jodconverter的官网。 使用到的技术有iText,poi,jodconverter 使用方法: 1、...

    c# Doc文件转rtf格式 richtextbox显示word格式doc

    另一种更轻量级的选择是使用开源库,如Apache POI(针对Java)或DocX(针对C#)。对于C#,我们可以使用DocX库,它允许在没有安装Word的情况下操作.doc文件。 2. **转换为RTF**:一旦读取了DOC文件,我们需要将其...

    java读取word文档.pdf

    Java 读取Word文档主要涉及的是处理不同类型的文档格式,如.doc、.docx或.rtf等。在Java中,由于Microsoft的Word文档格式复杂,直接读取并不简单,因此通常需要借助第三方库来实现。在给定的描述中提到了几种常用的...

    POI_添加批注

    - **支持的文档类型**:Excel (`.xls` 和 `.xlsx`)、Word (`.doc` 和 `.docx`) 和 PowerPoint (`.ppt` 和 `.pptx`)。 ##### 2. 批注 (Comment) - **定义**:在 Excel 中,批注是附加到单元格的文本注释,通常用于...

    java-pdf&word-jar.zip

    首先,`Spire.Doc.jar`是Spire.Doc for Java的库文件,它是一个强大的Java文档处理工具,允许开发者创建、编辑、读取和转换Microsoft Word文档(.doc和.docx格式)。通过Spire.Doc,你可以执行以下操作: 1. 创建新...

    java生成word,包括word表格,表格插入图片,jar包都在了

    在Java中,我们可以使用各种库来实现这个功能,比如Apache POI,它是一个开源项目,提供了API来处理Microsoft Office格式的文件,包括Word(.doc和.docx)。 在这个项目中,描述提到的关键知识点包括: 1. **...

    Java使用RTFTemplate.dot生成word文件

    在生成Word文档时,我们可以利用RTF(Rich Text Format)模板,这是一种可以存储格式化文本的数据格式,通常用于Word文档的导入和导出。 首先,要使用`RTFTemplate.dot`模板生成Word文档,你需要先创建一个RTF模板...

    java导出word文档 jar包 itext

    `iText`是一个强大的PDF处理库,但它同样支持创建Microsoft Word格式(.doc或.docx)的文档,这主要通过`iText`的RTF(Rich Text Format)功能实现。 `iText`库是Java中广泛使用的文本和PDF处理库,由iText ...

    iText可以制作中文PDF文件的JAVA源程序.rar

    6. **处理RTF和Word**:虽然iText主要用于PDF,但通过其他库如Apache POI,可以处理Word(.doc/.docx)和RTF文件的生成。Apache POI提供了一套类似的API,允许开发者以编程方式操作Word和RTF文档。 通过学习和理解...

    POI 相关jar包.rar

    3. **Word Processing**: POI还支持Word文档处理,通过HWPF(Horizontally-Scattered Paragraph Format)API处理老版的DOC格式,通过XWPF(XML Word Processing Format)API处理OOXML的.docx格式。这些API允许创建、...

    常用报表操作,itext_make_pdf,itext_make_word,jexcel_make_excel,poi_make_excel,pdf,Word,excel

    其次,`itext_make_word`可能是指一个使用iText库创建Word文档的实现,尽管iText主要设计用于PDF,但可以通过一些技巧生成类似Word的DOC或DOCX文件。通常,这需要将内容转换为HTML或RTF格式,然后写入文件。 `...

    Itext导出Word文档的例子

    要实现从Itext到Word的转换,通常的做法是先使用Itext创建一个PDF文档,然后利用`itext-rtf-2.1.7.jar`将PDF转换为RTF,最后再用Word打开并保存为最终的DOC或DOCX格式。以下是基本步骤: 1. **创建PDF文档**:使用...

    java 生成word 文件jar包

    此外,对于较新的Word格式(如.docx),iText可能不如其他专门处理OpenXML格式的库(如Apache POI)那么适用。 总的来说,这些jar包为Java开发者提供了一种便捷的方式来生成Word文件,适用于需要动态创建Word文档的...

Global site tag (gtag.js) - Google Analytics