项目中使用到了要解析word文档中的表格与图片,网上的2003的解析方式很多,2007以上的很少,我看了官网找了资料自己写了一个简单的解析方案,大家共同学习吧!有不对的地方希望大神指教!

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import org.apache.poi.hwpf.HWPFDocument;

import org.apache.poi.hwpf.usermodel.CharacterRun;

import org.apache.poi.hwpf.usermodel.Paragraph;

import org.apache.poi.hwpf.usermodel.Picture;

import org.apache.poi.hwpf.usermodel.Range;

import org.apache.poi.hwpf.usermodel.Table;

import org.apache.poi.hwpf.usermodel.TableCell;

import org.apache.poi.hwpf.usermodel.TableIterator;

import org.apache.poi.hwpf.usermodel.TableRow;

public class FileRead {

private static String filenamess;

private static Object String;

public static void main(String[] args) {

/***********************office word 2007版本以上解析********************************/

File file = new File("C:/Users/wangshuaifei/Desktop/test.doc");

String imagePath = "C:/Users/wangshuaifei/Desktop/pic";

/*try {

File file = new File("C:/Users/wangshuaifei/Desktop/word.docx");

String imagePath = "C:/Users/wangshuaifei/Desktop/pic";

OPCPackage oPCPackage = POIXMLDocument.openPackage(file.getPath());

XWPFDocument xwpf = new XWPFDocument(oPCPackage);

//获取页面中的表格

Iterator it = xwpf.getTablesIterator();

while(it.hasNext()) {

//循环页面中的表格

XWPFTable table = (XWPFTable) it.next();

//此表格中共有多少行,包括嵌套的总行数

int rcount = table.getNumberOfRows();

System.out.println(rcount);

StringBuffer str = new StringBuffer();

for (int i = 0; i < rcount; i++) {

//获取表格中的行

XWPFTableRow row = table.getRow(i);

//获取行中共有多少列

List cells = row.getTableCells();

for (int c = 0; c < cells.size(); c++) {

//获取列

XWPFTableCell cell = cells.get(c);

//System.out.println("Paragraphs:----"+cell.getParagraphs().size());

//获取列中的段落

for (int j = 0; j < cell.getParagraphs().size(); j++) {

//获取段落中的字符,包括空格(有待验证,我也不是很理解),每个字符为一个XWPFRun对象

List runs = cell.getParagraphs().get(j).getRuns();

for (int j2 = 0; j2 < runs.size(); j2++) {

//获取单个对象

XWPFRun r = runs.get(j2);

//获取字符,此位置不知道干嘛用的,0和-1都能用

String text = r.getText(r.getTextPosition());

str.append(text);

//System.out.println(text);

System.out.println(r.getUnderline().toString());

System.out.println(r.getSubscript().toString());

System.out.println(r.getFontFamily());

System.out.println(r.getFontSize());

System.out.println(r.isBold());

System.out.println(r.getColor());

//如果字符为空,可能是附件一类的文件,比如图片之类的,需要另外解析,此处处理为图片

if(text == null) {

List piclist = r.getEmbeddedPictures();

for (int k = 0; k < piclist.size(); k++) {

XWPFPicture pic = piclist.get(k);

//pic.getPictureData().getData();

byte[] picbyte = pic.getPictureData().getData();

//将图片写入本地文件

FileOutputStream fos = new FileOutputStream(imagePath +"/"+ file.getName()+j +".jpg");

fos.write(picbyte);

System.out.println("EmbeddedPictures:----"+r.getEmbeddedPictures().size());

}

}

}

str.append("\n");

}

}

}

System.out.println(str.toString());

}

oPCPackage.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}*/

FileRead.getWrodText(file, imagePath);

}

}

————————————————

版权声明:本文为CSDN博主「q496749021」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/q496749021/article/details/50266893

java poi操作word2007_java使用poi解析2007以上的word文档中的表格与图片相关推荐

  1. Python3-word文档操作(五):利用python修改word文档中的表格数据

    1. 简介: 本篇继续学习python操作word文档的相关知识.本篇主要学习: 1)如何获取一个已经存在文档中的表格的内容: 2)如何修改一个已经存在文档中的表格的内容: 2. 获取word文档中的 ...

  2. java读取word文档中的文字和图片,doc和docx兼容版

    也是我东抄抄,西抄抄拿来测试改装的,话不多说,直接上代码 <dependency><groupId>commons-io</groupId><artifact ...

  3. java上怎么把文字加边框_Java如何对Word文档中的文本应用边框?

    在Java编程中,如何对Word文档中的文本应用边框? 注意:需要访问网址:http://poi.apache.org/download.html , 下载一个Apache POI软件包.这里下载最新 ...

  4. 【C#】C#使用Microsoft.Office.Interop.Word操作Word文档,向表格插入图片

    上篇:[C#]C#使用Microsoft.Office.Interop.Word操作Word文档,替换文本 Word模板: 代码: try {Application app = new Applica ...

  5. Poi 设置word文档中的表格边框

    https://blog.csdn.net/qq_31189355/article/details/80438506 下面代码分别设置XWPFTable上下左右实线黑色边框,放到头部定义就好.定义完成 ...

  6. Word文档中如何进行插入图片操作

    我们有时在制作Word文档时,需要添加图片进去,那怎么添加图片呢? 首先,用speedoffice打开Word文件,在"插入"里面找到"图片"项目: 然后,在下 ...

  7. Python 使用docx库操作word文档中的表格单元格内容

    1.导入库 from docx import Document 2.加载word文档对象 doc = Document(path) 3.定位表格 # 获取所有表格对象 tables = doc.tab ...

  8. C# VS2012操作word文档 (二).插入表格图片

    在上一篇文章"C# VS2012创建word文档.(一)"中我们讲述了如何使用VS2012引用COM中Miscrosoft Word 14.0 Object Library实现创建 ...

  9. java读取word文档的复杂表格_poi读取word表格 java POI 如何读取word的表格中的表格...

    poi 操作word 2007 (如何删除word中的某一个表格)小编忘了哪年哪月的哪日小编在哪面墙上刻下张脸张微笑着忧伤着凝望小编的脸. public static void changeTable ...

最新文章

  1. Unity easyTouch移动代码(参考)
  2. 精选 Github 近期13款开源工具包!(附数据集、链接)
  3. jquery ajax 序列化表单传参提交实体对象到后台action
  4. js 中的break continue return
  5. linux+nm+内容详解,【Linux】nm命令中符号类型详解
  6. java反射比较两个model6_java反射机制
  7. Django--form验证及错误处理
  8. 从GitHub中整理出来的15个最受欢迎的Python开源框架,你喜欢哪个
  9. Socket网络编程--小小网盘程序(2)
  10. Chrome DevTools的Network面板
  11. 圣诞节吃饺子时,怎么给女票解释啥是AI?
  12. Blog运用感想 (ZT)
  13. twisted系列教程二–缓慢的诗
  14. 生物信息常用网站(数据库)
  15. 【JavaScript】制作日历
  16. 奥密克戎“后遗症”,比病毒更可怕
  17. CATTI 三级笔译考试准备
  18. 雨听 | 解决连接蓝牙后谷歌浏览器无声音(其他应用有声音)问题
  19. 网络运维工具--shell批量下发
  20. 2020年有寓意的领证日期_2020有寓意的领证日期是什么时候?什么时候领证吉利?...

热门文章

  1. Pandas知识点-逻辑运算
  2. Flask-SQLAlchemy 对数据库的增查改删
  3. 有关l2,1范数作用的理解--正则化项作用,不同于l1范数(矩阵元素绝对值之和)的稀疏要求,l21范数还要求行稀疏
  4. tensorflow中random_normal的使用,案例说明,一看便知
  5. 内容页响应母版页控件的事件
  6. centos 需要哪些常用端口_仓库加盟:电商仓库需要配备哪些常用仓储设备
  7. leetcode - 136. 只出现一次的数字
  8. leetcode - 1218. 最长定差子序列 (使用哈希表)
  9. python分割合并文件
  10. [GPL]GREP - basic - practice -advanced