也是我东抄抄,西抄抄拿来测试改装的,话不多说,直接上代码

<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.0.0</version></dependency>

这是maven导入的包

package com.hl.utils;import java.io.*;
import java.util.ArrayList;
import java.util.List;import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.model.*;
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.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;/*** 类 MsWordExtractor用来提取Microsoft Word 里面的文字和图片* 注意提取图片后,可以把图片放在由用户指定的路径下面** @author Zhou Xiaolong* @email shaolongchou@126.com*/public class DocUtil {private HWPFDocument doc = null;private Range range = null;private static List<Picture> pictsList = null;// 用来标记是否存在图片boolean hasPic = false;/*** 构造器,注意到所传入的参数必须是微软word文档的名字** @param msDocName* @throws IOException* @throws FileNotFoundException*/public DocUtil(String msDocName) {try {doc = new HWPFDocument(new FileInputStream(msDocName));range = doc.getRange();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 默认构造器,为私有函数*/private DocUtil() {}/*** 从word文档中获取所有文字** @return*/public String getAllText() {int numP = range.numParagraphs();StringBuffer ret = new StringBuffer();for (int i = 0; i < numP; ++i) {//从每一段落中获取文字Paragraph p = range.getParagraph(i);ret.append(p.text());}return ret.toString();}/*** 从word里面提取图片** @return*/private boolean extractPictures() {pictsList = new ArrayList();// 得到文档的数据流byte[] dataStream = doc.getDataStream();int numChar = range.numCharacterRuns();PicturesTable pTable = new PicturesTable(doc, dataStream, new byte[1024]);for (int j = 0; j < numChar; ++j) {CharacterRun cRun = range.getCharacterRun(j);// 是否有图片boolean has = pTable.hasPicture(cRun);if (has) {Picture picture = pTable.extractPicture(cRun, true);// 大于300bites的图片我们才弄下来,消除word中莫名的小图片的影响if (picture.getSize() > 300) {pictsList.add(picture);hasPic = true;}}}return hasPic;}/*** word文档里有几张图片,使用这个函数之前,* 必须先使用函数 extractPictures()** @return*/public int numPictures() {if (!hasPic)return 0;return pictsList.size();}/*** 把提取的图片保存到用户指定的位置** @param picNames, 图片要保存的路径,最好完整地写上图片类型* @return*/private boolean writePictures(String[] picNames, String savePath) {int size = pictsList.size();if (size == 0)return false;for (int i = 0; i < size; ++i) {Picture p = pictsList.get(i);try {p.writeImageContent(new FileOutputStream(savePath + "/" + picNames[i]));} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}return true;}// maven太好用了// 读取srcFile源word文件docx文字// 读取srcFile源word文件docx中的image图片并且存放在文件夹imageFile中private static String readDocxImage(String srcFile, String imageFile) {String path = srcFile;File file = new File(path);try {// 用XWPFWordExtractor来获取文字FileInputStream fis = new FileInputStream(file);XWPFDocument document = new XWPFDocument(fis);XWPFWordExtractor xwpfWordExtractor = new XWPFWordExtractor(document);String text = xwpfWordExtractor.getText();System.out.println(text);// 用XWPFDocument的getAllPictures来获取所有的图片List<XWPFPictureData> picList = document.getAllPictures();for (XWPFPictureData pic : picList) {byte[] bytev = pic.getData();// 大于300bites的图片我们才弄下来,消除word中莫名的小图片的影响if (bytev.length > 300) {FileOutputStream fos = new FileOutputStream(imageFile + "/" + pic.getFileName());fos.write(bytev);}}fis.close();return text;} catch (IOException e) {e.printStackTrace();}return null;}private static void readDocImage(String file, String savePath) {DocUtil extr = new DocUtil(file);String str = extr.getAllText().trim();extr.extractPictures();int num = extr.numPictures();String names[] = new String[num];for (int i = 0; i < num; ++i) {String imageType = pictsList.get(i).getMimeType().split("/")[1];names[i] = "image" + i + "." + imageType;}System.out.println(str);extr.writePictures(names, savePath);}public static void readWordImage(String file, String savePath) {if (null == savePath) {savePath = "";}if (file.endsWith(".doc")) {readDocImage(file, savePath);} else if (file.endsWith(".docx")) {readDocxImage(file, savePath);} else {return;}}public static void main(String[] args) {readWordImage("C:\\Users\\Administrator\\Desktop\\Doc1.doc", "C:\\Users\\Administrator\\Desktop");}}

java读取word文档中的文字和图片,doc和docx兼容版相关推荐

  1. Java 读取Word文档中的文本内容

    这篇文章将介绍如何使用Free Spire.Doc for Java组件在Java应用程序中读取Word文档的文本内容.Free Spire.Doc for Java提供了两种方法来读取Word文档中 ...

  2. 太实用了!在Java的Word 文档中插入或读取艺术字

    太实用了!在Java的Word 文档中插入或读取艺术字 简直不能太实用! 扫码关注<Java学研大本营>,加入读者群,分享更多精彩 艺术字是一组文本样式,允许您向文本添加设计元素,例如填充 ...

  3. java 界面艺术字,Java 在Word文档中添加艺术字

    与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...

  4. python生成word文档的表格_2018-10-04 [日常]用Python读取word文档中的表格并比较

    演示如下. 两个简单的word文档, 各有一个表格: 读取文档中的表格到列表(为演示只对单列表格操作): import docx def 取表格(文件名): 文件 = docx.Document(文件 ...

  5. java读取word文档里面的内容(包括doc和docx格式)

    java读取word文档里面的内容(包括doc和docx格式) java读取word文档里面的内容(包括doc和docx格式),使用POI架包 使用的POI架包如下 poi-3.16.jar poi- ...

  6. java poi操作word2007_java使用poi解析2007以上的word文档中的表格与图片

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

  7. Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本

    Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...

  8. python合并word表格单元格_Python实战009:读取Word文档中的表格数据及表格合并问题解决...

    同事最近被安排整理资料,主要工作室将文档中的表格数据提取出来并整理层Excel表格供我们FII刀具商城进行资料维护.由于刀具的种类繁多且规格无数,所以要处理的数据量相当的庞大.人工核对整理既费时又费力 ...

  9. Word2003入门动画教程36:在Word文档中插入文字

    Word 2003是微软公司提供的一款文字处理软件,可以对文字进行 排版 和编辑.分段等各种处理,最终将编辑好的内容打印出来,是办公室一族中必备的办公软件之一.这里Word联盟就为大家分享如何在Wor ...

最新文章

  1. iOS-查询数据库--指定数据表中的当前数据行的总数量
  2. 这几款嵌入式软件测试工具,好用到起飞~
  3. 海量数据库的查询优化及分页算法方案
  4. 介绍一个统计各个网站访问时长的Chrome扩展 - Rooster
  5. mysql整理_MySQL 日常整理
  6. MyBatis多表查询(一对一,一对多,多对多)
  7. 三、索引优化(4)索引碎片
  8. JavaScript 基础知识 - DOM篇(二)
  9. dpm码识别_如何读取直接零件打标码(DPM)
  10. FZOJ2110: Star
  11. 添加solr库工具类
  12. Word2016中出现多级标题自动编号不连续问题
  13. 计算机子网掩码在线,ip子网掩码计算器 子网掩码计算
  14. PASCAL Visual Object Classes Challenge 2007(VOC 2007)数据集预处理
  15. java静态代码块,构造代码块,构造函数,mian()代码执行顺序详细分析
  16. FPGA 11 基础 8421BCD码
  17. 普通最小二乘法、加权最小二乘法、广义最小二乘法
  18. 【VUE】微商城(七)----实现分类页面功能
  19. python培训班怎样收费
  20. C++ 拉格朗日插值法优化 DP

热门文章

  1. 豆瓣电影flask网页
  2. 项目经理应具备的关键能力
  3. golang swagger注解说明
  4. 【一天一门编程语言】Pascal 语言程序设计极简教程
  5. HTML小图标的使用(无需下载图标源码)
  6. 装系统提示:Error1962:No operating system found.解决办法在此
  7. Matlab GUI编程技巧(一):如何使gui编的界面一运行就居中
  8. 桌球游戏java_JAVA 第一个小项目 桌球游戏 (桌球小程序练习)
  9. 考研复试个人陈述范文(共9篇)
  10. 视频分解图片,图片合成视频