`
endual
  • 浏览: 3572513 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 读取 doc poi读取word中的表格(转)

    博客分类:
  • java
 
阅读更多

Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API。在网上见到好多通过poi读取excel的文章,读写也很方便,和jxl有的一比。在这里,主要是poi对word中的表格数据读取。

具体见代码

Java代码  收藏代码
  1. import java.io.File;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileNotFoundException;  
  4.   
  5. import org.apache.poi.hwpf.HWPFDocument;  
  6. import org.apache.poi.hwpf.usermodel.Paragraph;  
  7. import org.apache.poi.hwpf.usermodel.Range;  
  8. import org.apache.poi.hwpf.usermodel.Table;  
  9. import org.apache.poi.hwpf.usermodel.TableCell;  
  10. import org.apache.poi.hwpf.usermodel.TableIterator;  
  11. import org.apache.poi.hwpf.usermodel.TableRow;  
  12.   
  13. import java.io.File;     
  14. import java.io.FileInputStream;     
  15. import java.io.InputStream;     
  16.     
  17. import org.apache.poi.POIXMLDocument;     
  18. import org.apache.poi.POIXMLTextExtractor;     
  19. import org.apache.poi.hwpf.extractor.WordExtractor;     
  20. import org.apache.poi.openxml4j.opc.OPCPackage;     
  21. import org.apache.poi.xwpf.extractor.XWPFWordExtractor;    
  22.   
  23.   
  24. import org.apache.poi.poifs.filesystem.POIFSFileSystem;  
  25.   
  26. public class ExportDocImpl  
  27. {  
  28.     public void testWord(){  
  29.         try{  
  30.             FileInputStream in = new FileInputStream("D:\\sinye.doc");//载入文档  
  31.            POIFSFileSystem pfs = new POIFSFileSystem(in);     
  32.             HWPFDocument hwpf = new HWPFDocument(pfs);     
  33.             Range range = hwpf.getRange();//得到文档的读取范围  
  34.             TableIterator it = new TableIterator(range);  
  35.            //迭代文档中的表格  
  36.             while (it.hasNext()) {     
  37.                 Table tb = (Table) it.next();     
  38.                 //迭代行,默认从0开始  
  39.                 for (int i = 0; i < tb.numRows(); i++) {     
  40.                     TableRow tr = tb.getRow(i);     
  41.                     //迭代列,默认从0开始  
  42.                     for (int j = 0; j < tr.numCells(); j++) {     
  43.                         TableCell td = tr.getCell(j);//取得单元格  
  44.                         //取得单元格的内容  
  45.                         for(int k=0;k<td.numParagraphs();k++){     
  46.                             Paragraph para =td.getParagraph(k);     
  47.                             String s = para.text();     
  48.                             System.out.println(s);  
  49.                         } //end for      
  50.                     }   //end for  
  51.                 }   //end for  
  52.             } //end while  
  53.         }catch(Exception e){  
  54.             e.printStackTrace();  
  55.         }  
  56.     }//end method  
  57.       
  58.       
  59.            public void testWord1(){  
  60.            try {     
  61.             //word 2003: 图片不会被读取     
  62.             InputStream is = new FileInputStream(new File("D:\\sinye.doc"));     
  63.                   WordExtractor ex = new WordExtractor(is);     
  64.                   String text2003 = ex.getText();     
  65.                   System.out.println(text2003);     
  66.             //word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后     
  67.             OPCPackage opcPackage = POIXMLDocument.openPackage("D:\\sinye.doc");     
  68.                   POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);     
  69.                   String text2007 = extractor.getText();     
  70.                   System.out.println(text2007);     
  71.                  
  72.         } catch (Exception e) {     
  73.                   e.printStackTrace();     
  74.         }   
  75.     }  
  76. }  

 

分享到:  
评论
8 楼 wangyu1221 2011-01-22   引用
我孤陋寡闻了,原来poi还能读word……我都只用poi来写excel的报表
7 楼 苹果超人 2011-01-21   引用
如果文档的前面有一段文字,下面才是表格,poi能直接定位到表格吗?
6 楼 Mr.Cheney 2010-08-26   引用
 请问 :读取出来的表格里面的内容,都是没有格式的,如何解决 区分出来主栏 宾栏 公共区 数据区。 愁 着呢 还有读取图片
5 楼 sinye 2010-04-06   引用
renyy 写道
Lz你好,在使用你事例代码时发现如果表格中数据不是中文时在输出时为出现“”这种不能识别的字符,请问有没有解决方案呢?例如,有一个2行2列的表格,数据如下: 
aa 中文没问题 
bb GC231 

输出为  aa.中文没问题..bb.GC231 

GC231后面的标志怎么处理呢?(它的值不是特定的) 



请试着在你取出的数据后面用trim()方法截取一下,我出现过这种问题,trim()后就好了!
4 楼 renyy 2010-04-04   引用
Lz你好,在使用你事例代码时发现如果表格中数据不是中文时在输出时为出现“”这种不能识别的字符,请问有没有解决方案呢?例如,有一个2行2列的表格,数据如下: 
aa 中文没问题 
bb GC231 

输出为  aa.中文没问题..bb.GC231 

GC231后面的标志怎么处理呢?(它的值不是特定的) 

3 楼 lkj107 2010-02-24   引用
poi之前好一阵没有人维护word部分了,apache的poi介绍也在招poi的维护,后来看到支持2007了,能够满足一些很基本的功能
介绍说因为word不是开源的,建议学习openOffice的代码再去帮apache做开发
2 楼 shappy1978 2010-02-09   引用
应该说基本够用了,起码基础的数据都解析出来了,需要我们在上面再努力一把。
2007的支持就相当弱了,除了表格没定位,修订内容没定位,宏替换处理的不好还有相当多的问题,看源码里面相当多的todo就知道了
1 楼 zcy860511 2010-02-05   引用
曾经为一个小公司做一个生成word的项目,当时发现了POI,但是经过测试功能完全不够用,所以没有使用,最后使用的JNI实现VBA本地调用。 

很久没关注这个项目了,不知道更新的怎么样了,看楼主的写法似乎POI更新了?额。。。有空去看看这个项目怎么样了
分享到:
评论
2 楼 贝塔ZQ 2016-09-19  
java实现操作word中的表格内容,用插件实现的话,可以试试PageOffice插件,专门操作office文件的
1 楼 mmmmmmlei 2016-04-14  
楼主要解析后的word文档的部分内容;这个怎么做?不能equal;因为要的内容多;

相关推荐

    java使用poi操作.doc word模板替换,循环插入表格

    在Java编程中,Apache POI库是一个非常实用的工具,它允许开发者读写Microsoft Office格式的文件,如Word(.doc或.docx)、Excel(.xls或.xlsx)和PowerPoint(.ppt或.pptx)。本篇文章将深入探讨如何利用POI库在...

    java Apache poi 对word doc文件进行读写操作

    在实际应用中,Apache POI 的功能不仅限于简单的读写操作,还支持复杂的格式转换、样式调整和模板填充等功能,是 Java 开发者处理 Word 文件的强大工具。然而,需要注意的是,由于 `.doc` 文件格式的复杂性,处理...

    Java读取Word中的表格(Excel),并导出文件为Excel

    在这个场景中,我们主要关注XSSF,因为Word中的表格可以被导出为.xlsx格式。 1. **导入必要的库**: 在开始编写代码之前,确保在项目中添加了Apache POI的依赖。如果是Maven项目,可以在pom.xml文件中添加以下依赖...

    java 读取 doc docx word 中的内容 数据

    ### Java读取DOC/DOCX/Word文档内容的数据方法 #### 概述 在实际开发过程中,经常需要处理各种格式的文档数据。其中,Word文档(.doc 和 .docx)是最常见的一种类型。Java提供了多种库来读取这些文档中的内容,...

    利用POI读取excel写入到word

    要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...

    java+poi+word转pdf的简单demo,执行转换main方法不会抛异常

    在本示例中,我们将深入探讨如何使用Java和Apache POI库实现Word到PDF的转换,以及解决在转换过程中可能出现的依赖问题。 首先,要实现这个功能,我们需要在项目中添加Apache POI和额外的转换库,如iText或Apache ...

    POI读取 word 2003 和 word 2007 的例子

    值得注意的是 POI 在读取 word 文件的时候不会读取 word 文件中的图片信息 还有就是对于 2007 版的 word docx 如果 word 文件中有表格 所有表格中的数据都会在读取出来的字符串的最后 "&gt;这是一个POI读取word 2003 和...

    Java通过POI读取Excel遍历数据,批量生成word文档

    本教程将重点讲解如何使用Apache POI库来读取Excel数据,并基于这些数据批量生成Word文档。Apache POI是一个开源项目,它允许Java开发者处理Microsoft Office格式的文件,如Excel(.xlsx或.xls)和Word(.docx)。 ...

    java 利用POI读取Word文件中的内容

    在Java编程语言中,Apache POI是一个非常流行的库,它允许开发者处理Microsoft Office格式的文件,包括Word(.doc和.docx)文档。本篇将详细介绍如何利用Apache POI库来读取Word文件中的内容。 首先,理解Apache ...

    POI读取word文档的文字内容和图片内容

    在本主题中,我们将深入探讨如何使用POI库读取Word文档中的文字内容和图片。 首先,我们需要理解Word文档的基本结构。Word文档本质上是由一系列基于XML的数据存储在.OFFICEML格式的文件中,这使得我们可以通过解析...

    poi将word转换成html、样式 表格 图片处理

    XWPFParagraph 和 XWPFRun 对象分别代表Word中的段落和文本运行。这些对象提供了获取和设置字体大小、颜色、样式(如粗体、斜体)等属性的方法。在转换为HTML时,我们需要将这些样式信息转换为CSS样式。 5. **处理...

    java 读取 word poi用到的jar包文件

    在Java中,使用Apache POI读取Word文档,你需要包含以下关键的jar包文件: 1. **poi-ooxml-schemas**: 包含了用于解析Office Open XML (OOXML)格式的XML Schema定义,Word 2007 (.docx)及之后版本就是以OOXML格式...

    Java Poi流根据Word模板插入相应的文本、表格和图片,并生成新的Word报告。

    Java POI 是一个开源项目,专门用于处理Microsoft Office文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)等。在这个场景中,我们关注的是如何利用Java POI库通过Word模板生成包含特定...

    Java读取多Word文档中指定位置的表格数据或文本内容

    Java读取Word文档中指定位置(可以自己自定义位置)的表格数据或文本内容 * @param filePath 文档路径 * @param start 指定位置开始读取表格数据的该位置上的字符串 * @param end 指定位置开始结束读取表格数据的该...

    JAVA-POI读取word每一段所在页码(附依赖jar包).zip

    我给出了代码和所有的解释,用POI读取word中的页码。也算是小方法了,基本很准确,为什么要加一个基本呢?因为,分页标志符号在第一行为空白行的时候没有分页符!!所以你的文档如果有很多首段空白行的话,不要浪费C...

    JAVA读取WORD_EXCEL_POWERPOINT_PDF文件的方法(poi)

    JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法(poi) JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法是使用 Apache POI 库来实现的。POI 库是一个开放源代码的 Java 库,提供了对 Microsoft Office 文件格式...

    java 使用POI合并两个word文档.docx

    Java 使用 POI 合并两个 Word 文档 Java 是一种流行的编程语言,POI(Poor Obfuscation Implementation)是一个流行的 Java 库,用于操作 Microsoft Office 文件,包括 Word 文档。合并两个 Word 文档是指将两个...

    java-poi完美读写word(doc/docx)和TXT。附jar包

    在这个主题中,我们将深入探讨如何使用Java POI库来实现Word(包括.doc和.docx)以及TXT文件的读写操作。 首先,让我们了解一下Java POI的工作原理。POI库提供了HSSF和XSSF两个API,分别用于处理旧版的二进制Excel...

    java准确读取word页码

    在Java编程环境中,读取Word文档的页码是一项常见的任务,尤其在处理大量文档数据时。这个场景下,我们通常会使用Apache POI库,这是一个强大的API,专门用于处理Microsoft Office格式的文件,包括Word(.doc和.docx...

    [简单]poi读取word 2007简单文本框值

    标题中的“poi读取word 2007简单文本框值”指的是使用Apache POI库来读取Microsoft Word 2007文档中简单文本框内的文本内容。Apache POI是一个流行的开源Java库,用于处理Microsoft Office格式的文件,如Word(.docx...

Global site tag (gtag.js) - Google Analytics