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 ...
随机推荐
- 相似QQ对话框上下部分可拖动代码
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Bootstrap全局CSS样式之排版
Bootstrap能全然友好的支持html5的文本元素,这里不再赘述,详细可參考我还有一篇文章<html的文本元素总结>,这里主要针对Bootstrap封装好的CSS文本样式做一下汇总. ...
- COCOS学习笔记--关于使用cocostudio打安卓包
我在之前的博客里也写到过,如今cocos引擎提供了一键打包.很方便. 今天正好做个測试,想用引擎的一键打包弄个apk的安卓包.以下就简介一下详细过程和自己的一些理解: 先说一下项目背景,因为我的电脑是 ...
- Unity打包android的apk与数据包.obb分离和apk签名
那么,通过以上图片.我相信大多数人已经知道怎么创建了,apk签名比較简单,假设之前没有签名文件.那么选择图中的Create New Keystore然后在以下两个password框中输入passwor ...
- angularf封装echarts
前言:angular中快速使用echarts 在html使用ehart很简单,你只需要引入文件和按照官方例子按照对应参数配置和数据填充就Ok了,那么在angular中怎么使用eharts(可以使用ec ...
- IDEA配置jdk
提前安装jdk,配置环境变量 一.配置jdk 1.依次点开File -->Project Structure,点击左侧标签页,点击SDKs 2.点击+号,选SDK 3.按照这个顺序,可以配置多个 ...
- 《程序设计实践》【PDF】下载
<程序设计实践>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196319 内容简介 本书从排错.测试.性能.可移植性.设计.界面. ...
- 中文颜色名称与RGB颜色对照表
中文颜色名称颜色对照表 鸨色 #f7acbc 赤白橡 #deab8a 油色 #817936 绀桔梗 #444693 踯躅色 #ef5b9c 肌色 #fedcbd 伽罗色 #7f7522 花色 #2b4 ...
- 使用parcel替代webpack制作omi-tap插件
Parcel 是一个零配置的网络应用打包工具, 适用于经验不同的开发者, 它利用多核处理提供了极快的速度.对比 webpack 最大的两个亮点: 零配置 极快速 omi 相关的插件都是基于 webpa ...
- ListView用法总结C#
ListView是个较为复杂的控件 网上教程写的很乱,C#中文资料太匮乏了,小白叔叔觉得有必要自己出一份了. http://blog.sina.com.cn/s/blog_43eb83b901 ...