poi 读取word文档
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文档的更多相关文章
- java 使用poi读取word文档存入数据库
使用的poi jar包需要自己下载 读取的word文档中含有多个图片,所以分为两个部分,一个部分读取各个表格中内容,一个是将所有图片截取出来: /** * 遍历段落内容 * docxReadPath ...
- 利用POI读取word文档实例
package read.document; import java.io.FileInputStream; import java.io.FileNotFoundException; import ...
- POI生成word文档完整案例及讲解
一,网上的API讲解 其实POI的生成Word文档的规则就是先把获取到的数据转成xml格式的数据,然后通过xpath解析表单式的应用取值,判断等等,然后在把取到的值放到word文档中,最后在输出来. ...
- 利用POI工具读取word文档并将数据存储到sqlserver数据库中
今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...
- 用java语言通过POI实现word文档的按标题提取
最近有一个项目需要将一个word文档中的数据提取到数据库中.就去网上查了好多资料,最靠谱的就是用poi实现word文档的提取. 喝水不忘挖井人,我查了好多资料就这个最靠谱,我的这篇博客主要是借鉴htt ...
- java中读取word文档里的内容
package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- POI生成WORD文档
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- C#读取Word文档内容代码
首先要添加引用com组件:然后引用: using Word = Microsoft.Office.Interop.Word; 获取内容: /// /// 读取 word文档 返回内容 /// //// ...
- Poi之Word文档结构介绍
1.poi之word文档结构介绍之正文段落 一个文档包含多个段落,一个段落包含多个Runs,一个Runs包含多个Run,Run是文档的最小单元 获取所有段落:List<XWPFParagraph ...
随机推荐
- action属性注入为null
一. 问题: 今天调试代码遇到问题,使用spring管理action,当中注入了部分原始类型的属性. 配置示比例如以下: <bean class="test.login.test.Lo ...
- 用泛型创建SqlServerHelper类实现增删改查(一)
使用泛型,可以构建对数据库单表的基本增删改查. 首先有一数据库 Test_SqlServerHelper ,有2表 接下来创建项目,对数据库进行增删改查. 直接贴代码:(SqlServerHelper ...
- 【quickhybrid】API规划
前言 当一切就绪后,就要开始进行API规划,这一块是整个Hybrid框架中非常重要的内容,毕竟对于前端页面来说,只会通过JS API来调用功能. 基本上,API调用起来是否方便简洁影响着整个体验. 这 ...
- Idea在导入有maven项目时,不能自动识别pom.xml
当在idea中导入maven项目时,不能自动识别pom文件,显示为普通橙色xml文件. 解决方法:点击最右侧侧边栏,点击添加(蓝的的小加号),选择你导入项目的pom.xml文件
- gearman学习笔记1
1.简介 gearman是一个分布式开发框架,适合处理一些必须处理但是不影响主流程的操作,比如保存日志.发送邮件.缩略图片等.最早是基于perl语言的,2008年发布的时候改为C++语言开 ...
- 《Java并发编程实战》/童云兰译【PDF】下载
<Java并发编程实战>/童云兰译[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062521 内容简介 本书深入浅出地介绍了Jav ...
- js 数组的常用方法归纳
数组的常用方法归纳 slice(start,end) 传参:start代表从哪里开始截取,end代表截取结束的地方 var a = [1,2,3]a.slice(1);//[2,3] pop() 可以 ...
- 成功解决react+webpack打包文件过大的问题
最近在学习并使用webpack+react+antd写了一个小项目,也可以说是demo,待全部开发完成后发现webpack的打包文件足足有将近13.3MB,快吓死宝宝了,经过连续几天的学习,和调试最后 ...
- 【CSS3】透明度opacity与rgba()区别、光标cursor、display、轮廓outline与margin及border区别、em和rem区别
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 函数的非固定参数-Day3
一.函数非固定参数 1.默认函数,我们在传参之前,选给参数指定一个默认的值.默认参数特点是非必须传递的. def test(x,y=2): print(x) print(y) print(" ...