poi读取word2003(.doc文档)中的表格

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

具体见代码

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

poi读取word2003(.doc文档)中的表格的更多相关文章

  1. 使用Java POI来选择提取Word文档中的表格信息

    通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...

  2. 2018-10-04 [日常]用Python读取word文档中的表格并比较

    最近想对某些word文档(docx)的表格内容作比较, 于是找了一下相关工具. 参考Automate the Boring Stuff with Python中的word部分, 试用了python-d ...

  3. C# 在word文档中复制表格并粘帖到下一页中

    C# 在word文档中复制表格并粘帖到下一页中 object oMissing = System.Reflection.Missing.Value;            Microsoft.Offi ...

  4. C# 如何在PDF文档中创建表格

    表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组 ...

  5. [.NET开发] C# 如何在PDF文档中创建表格

    表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组 ...

  6. php创建读取 word.doc文档

    创建文档; <?php $html = "this is question"; for($i=1;$i<=3;$i++){ $word = new word(); $w ...

  7. 读取一个txt文档中的内容

    包含的头文件:#include <fstream> bool CMaked::ReadFileMake(CString filePath, CString &isChange) { ...

  8. 将表格添加到Word文档中 ,包括表格样式设置

    创建 Table 对象并设置其属性 在您将表格插入文档之前,必须创建 Table 对象并设置其属性. 要设置表格的属性,请创建TableProperties对象并为其提供值. TablePropert ...

  9. [java 2019-04-09] 代码生成word文档中的表格嵌套问题

    public static void createContent3(Date adtStart, Date adtEnd, Map<String, Object> aMap,Map< ...

随机推荐

  1. [Windows Server 2008] IIS自带FTP配置方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:IIS自带FT ...

  2. CAD绘制一个角度标注(com接口VB语言)

    主要用到函数说明: _DMxDrawX::DrawDimAngular 绘制一个角度标注.详细说明如下: 参数 说明 DOUBLE dAngleVertexX 角度标注的顶点的X值 DOUBLE dA ...

  3. 常见的Xshell运行命令

    最近接触到了Xshell这个软件,使用这个软件我们来进行连接Linux系统,进去之后我们可能会两眼一抹黑,小编就带大家来学些常见的shell命令. 首先我们要跟大家从最简单的聊起,我们进入Xshell ...

  4. FTP服务器访问主动模式、被动模式

    在公司里面,经常需要访问外网FTP取资料等情况.但是有时用windows界面访问经常遇到各种问题. 下面介绍两种客户端是如何访问ftp服务器. 首先我们需要说明:防火墙,是阻拦外界与内部的通讯的一道关 ...

  5. Java对象的创建及使用

    Java对象的创建及使用 对象是类的具体实例(instance),是真实存在的个体:

  6. EF-Linq

    一丶基本语法(from a in Table where a.id="001" select a).Tolist(); 隐式内连接from a in table1 join b i ...

  7. sublime text3 verilog代码编写高级操作篇

    2018.10.21 好久没写博客了,这段时间一直在学习一直在沉淀,然而发现学的越多会的更少,只能快马加鞭吧! 博主从大一暑假接触FPGA,到现在快一年半了,时间恍逝.刚开始入门也是用的quartus ...

  8. Beauty of Array ZOJ - 3872(思维题)

    Edward has an array A with N integers. He defines the beauty of an array as the summation of all dis ...

  9. Dinic当前弧优化 模板及教程

    在阅读本文前,建议先自学最大流的Ek算法. 引入 Ek的核心是执行bfs,一旦找到增广路就停下来进行增广.换言之,执行一遍BFS执行一遍DFS,这使得效率大大降低.于是我们可以考虑优化. 核心思路 在 ...

  10. uva 1585 Score(Uva-1585)

    vj:https://vjudge.net/problem/UVA-1585 不多说水题一个o一直加x就加的变为0 我的代码 #include <iostream> #include &l ...