1.导入jar包

官网下载地址:

https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.zip

最开始的时候没有导入xmlbeans包,运行的时候报了个异常,然后学乖了

2.对象的说明

2.1关于word有两个对象;XWPFDocument和HWPFDocument分别对应word2007以上和word2003具体的说明见下面这段话:

来自某位大牛的博客,链接找不到了

2.2

3.读取

3.1 XWPFDocument读取word,并将其中的图片保存

里面的CTP似乎是封装了文档的属性,但查了很多资料讲的也都很模糊,希望有高手看到可以不吝赐教

 @Test
public void test1() throws IOException {
InputStream is = new FileInputStream(new File("e:/test.docx"));
XWPFDocument doc = new XWPFDocument(is); List<XWPFParagraph> paragraphs = doc.getParagraphs();
for(XWPFParagraph paragraph:paragraphs) {
// print(paragraph.getText()); //获取段落属性
/*CTPPr pPr = paragraph.getCTP().getPPr();
print(pPr);*/ } //获取表格 表格--->行--->单元格
/*List<XWPFTable> tables = doc.getTables();
for(XWPFTable table: tables) {
//表格属性
print(table.getCTTbl());
List<XWPFTableRow> rows = table.getRows();
for(XWPFTableRow row:rows) {
List<XWPFTableCell> tableCells = row.getTableCells();
for(XWPFTableCell cell:tableCells) {
print(cell.getText()); //单元格属性
print(cell.getCTTc()); }
}
}*/
String dirPath = "e:/picture_test_docx/";
File dir = new File(dirPath);
if(!dir.exists()) {
dir.getParentFile().mkdirs();
}
BufferedOutputStream bos =null;
//获取图片
List<XWPFPictureData> pictures = doc.getAllPictures();
for(XWPFPictureData picture:pictures) {
byte[] data = picture.getData();
String picName = picture.getFileName();
print("-------"+picture.getPackagePart());;
UUID uuid = UUID.randomUUID();
File file = new File(dirPath+uuid + picName);
if(!file.exists()) {
file.getParentFile().mkdirs();
file.createNewFile();
}else {
file.delete();
}
bos = new BufferedOutputStream(new FileOutputStream(file));
bos.write(data);
bos.flush();
}
       bos.close();
doc.close();
is.close();
}

注意看这图,标注的地方,输出的东西,你可能会很奇怪word文档怎么会有包的结构?把word文件改成zip或者rar打开后你就可以发现word的包结构

3.2 XWPFWordExtractor读取

ps:用poi用word中插入图片时有个无法显示的bug,网上有一些解决方案,但试了几个都没法用,希望将来有这种需求的时候bug已修复

poi 读取word文档的更多相关文章

  1. java 使用poi读取word文档存入数据库

    使用的poi jar包需要自己下载 读取的word文档中含有多个图片,所以分为两个部分,一个部分读取各个表格中内容,一个是将所有图片截取出来: /** * 遍历段落内容 * docxReadPath ...

  2. 利用POI读取word文档实例

    package read.document; import java.io.FileInputStream; import java.io.FileNotFoundException; import ...

  3. POI生成word文档完整案例及讲解

    一,网上的API讲解 其实POI的生成Word文档的规则就是先把获取到的数据转成xml格式的数据,然后通过xpath解析表单式的应用取值,判断等等,然后在把取到的值放到word文档中,最后在输出来. ...

  4. 利用POI工具读取word文档并将数据存储到sqlserver数据库中

    今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...

  5. 用java语言通过POI实现word文档的按标题提取

    最近有一个项目需要将一个word文档中的数据提取到数据库中.就去网上查了好多资料,最靠谱的就是用poi实现word文档的提取. 喝水不忘挖井人,我查了好多资料就这个最靠谱,我的这篇博客主要是借鉴htt ...

  6. java中读取word文档里的内容

    package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...

  7. POI生成WORD文档

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  8. C#读取Word文档内容代码

    首先要添加引用com组件:然后引用: using Word = Microsoft.Office.Interop.Word; 获取内容: /// /// 读取 word文档 返回内容 /// //// ...

  9. Poi之Word文档结构介绍

    1.poi之word文档结构介绍之正文段落 一个文档包含多个段落,一个段落包含多个Runs,一个Runs包含多个Run,Run是文档的最小单元 获取所有段落:List<XWPFParagraph ...

随机推荐

  1. action属性注入为null

    一. 问题: 今天调试代码遇到问题,使用spring管理action,当中注入了部分原始类型的属性. 配置示比例如以下: <bean class="test.login.test.Lo ...

  2. 用泛型创建SqlServerHelper类实现增删改查(一)

    使用泛型,可以构建对数据库单表的基本增删改查. 首先有一数据库 Test_SqlServerHelper ,有2表 接下来创建项目,对数据库进行增删改查. 直接贴代码:(SqlServerHelper ...

  3. 【quickhybrid】API规划

    前言 当一切就绪后,就要开始进行API规划,这一块是整个Hybrid框架中非常重要的内容,毕竟对于前端页面来说,只会通过JS API来调用功能. 基本上,API调用起来是否方便简洁影响着整个体验. 这 ...

  4. Idea在导入有maven项目时,不能自动识别pom.xml

    当在idea中导入maven项目时,不能自动识别pom文件,显示为普通橙色xml文件. 解决方法:点击最右侧侧边栏,点击添加(蓝的的小加号),选择你导入项目的pom.xml文件

  5. gearman学习笔记1

    1.简介       gearman是一个分布式开发框架,适合处理一些必须处理但是不影响主流程的操作,比如保存日志.发送邮件.缩略图片等.最早是基于perl语言的,2008年发布的时候改为C++语言开 ...

  6. 《Java并发编程实战》/童云兰译【PDF】下载

    <Java并发编程实战>/童云兰译[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062521 内容简介 本书深入浅出地介绍了Jav ...

  7. js 数组的常用方法归纳

    数组的常用方法归纳 slice(start,end) 传参:start代表从哪里开始截取,end代表截取结束的地方 var a = [1,2,3]a.slice(1);//[2,3] pop() 可以 ...

  8. 成功解决react+webpack打包文件过大的问题

    最近在学习并使用webpack+react+antd写了一个小项目,也可以说是demo,待全部开发完成后发现webpack的打包文件足足有将近13.3MB,快吓死宝宝了,经过连续几天的学习,和调试最后 ...

  9. 【CSS3】透明度opacity与rgba()区别、光标cursor、display、轮廓outline与margin及border区别、em和rem区别

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. 函数的非固定参数-Day3

    一.函数非固定参数 1.默认函数,我们在传参之前,选给参数指定一个默认的值.默认参数特点是非必须传递的. def test(x,y=2): print(x) print(y) print(" ...