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似乎是封装了文档的属性,但查了很多资料讲的也都很模糊,希望有高手看到可以不吝赐教

 1 @Test
 2     public void test1() throws IOException {
 3         InputStream is = new FileInputStream(new File("e:/test.docx"));
 4         XWPFDocument doc = new XWPFDocument(is);
 5
 6         List<XWPFParagraph> paragraphs = doc.getParagraphs();
 7         for(XWPFParagraph paragraph:paragraphs) {
 8         //    print(paragraph.getText());
 9
10             //获取段落属性
11             /*CTPPr pPr = paragraph.getCTP().getPPr();
12             print(pPr);*/
13
14         }
15
16         //获取表格  表格--->行--->单元格
17         /*List<XWPFTable> tables = doc.getTables();
18         for(XWPFTable table: tables) {
19             //表格属性
20             print(table.getCTTbl());
21             List<XWPFTableRow> rows = table.getRows();
22             for(XWPFTableRow row:rows) {
23                 List<XWPFTableCell> tableCells = row.getTableCells();
24                 for(XWPFTableCell cell:tableCells) {
25                       print(cell.getText());
26
27                     //单元格属性
28                     print(cell.getCTTc());
29
30                 }
31             }
32         }*/
33         String dirPath = "e:/picture_test_docx/";
34         File dir = new File(dirPath);
35         if(!dir.exists()) {
36             dir.getParentFile().mkdirs();
37         }
38         BufferedOutputStream bos =null;
39         //获取图片
40         List<XWPFPictureData> pictures = doc.getAllPictures();
41         for(XWPFPictureData picture:pictures) {
42             byte[] data = picture.getData();
43             String picName = picture.getFileName();
44             print("-------"+picture.getPackagePart());;
45             UUID uuid = UUID.randomUUID();
46             File file = new File(dirPath+uuid + picName);
47             if(!file.exists()) {
48                 file.getParentFile().mkdirs();
49                 file.createNewFile();
50             }else {
51                 file.delete();
52             }
53             bos =  new BufferedOutputStream(new FileOutputStream(file));
54             bos.write(data);
55             bos.flush();
56         }       bos.close();
57         doc.close();
58         is.close();
59     }

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

3.2 XWPFWordExtractor读取

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

原文地址:https://www.cnblogs.com/tele-share/p/8196643.html

时间: 2024-10-10 05:46:47

poi 读取word文档的相关文章

使用poi读取word文档

看了很多资料,就一点一点总结吧. word2003和word2007以及以上的后缀名都不一样,一个是doc一个是docx,所以在解析的时候也不一样,而这边主要是使用poi.但是看了很多资料都没有找到所谓的3.8的版本,在官网上只能找到3.11版本(或是是个人的英语水平不行吧) 这个小dome主要就是一个简单的读取word文档,复杂的继续研究: public class ReadWord {    public static void main(String[] args) {        tr

Java读取word文档解决方案

java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java2Word.jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄:itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法.经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,

asp.net页面读取word文档内容显示

用asp.net实现对指定word文档内容的读取显示该如何实现?比如左边读取指定文件夹中所有的word文档,以文档的标题作为链接,点击文档标题则在右边某位置显示出该word文档中的内容(包括字体样式,图片显示等). 可以这样实现: 操作WORD配置说明 引入:Word的对象库文件“MSWORD.OLB”(word 2000为MSWORD9.OLB) 1.运行Dcomcnfg.exe 2.组件服务――计算机――我的电脑――DCOM配置――找到microsoft word 文档 3.点击属性 4.选

Poi之Word文档结构介绍

1.poi之word文档结构介绍之正文段落 一个文档包含多个段落,一个段落包含多个Runs,一个Runs包含多个Run,Run是文档的最小单元 获取所有段落:List<XWPFParagraph> paragraphs = word.getParagraphs(); 获取一个段落中的所有Runs:List<XWPFRun> xwpfRuns = xwpfParagraph.getRuns(); 获取一个Runs中的一个Run:XWPFRun run = xwpfRuns.get(i

[转载]linux上用PHP读取WORD文档

在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档. 再使用php执行系统命令调用而已. 具体操作如下: 1.安装antiword 官方站:http://www.winfield.demon.nl/ 下载地:http://www.winfield.demon.nl/linux/antiword-0.37.tar.gz 下载完,解压,进入目录 使用命令 make && make install 即可完成安装. 安装时,自动安装到了/roo

C# 设置、删除、读取Word文档背景——基于Spire.Cloud.Word

Spire.Cloud.Word.Sdk提供了接口SetBackgroudColor().SetBackgroudImage().DeleteBackground().GetBackgroudColor()用于设置.删除及读取Word文档背景.本文将以C#程序为例演示如何来调用API接口实现以上内容操作. 必要步骤: 步骤一:dll文件获取及导入.通过官网下载SDK文件包. 下载后,解压文件,将Spire.Cloud.Word.Sdk.dll文件及其他三个dll添加引用至VS程序(如下图):或者

PHP在linux读取word文档

2014-08-28 13:34 2950人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 这几天帮朋友解决一个技术问题,在Linux下,将word文档中的内容读取,然后使用正则匹配,拼成sql入库 查阅了外文资料和google之后,步骤如下: #wget http://www.winfield.demon.nl/linux/antiword-0.37.tar.gz#tar zxvf antiword-0.37.tar.gz#cd antiword-0.37#

读取Word文档的标题

一:描述,将读取的文档标题添加到下拉框中 二:代码 #region 方法:得到Word文档标题的内容 public static List<string> GetTitles(int j,int m)//标题深度,标题字符个数选取标准 { List<string> title = new List<string>(); for (int i = 0; i <= j; i++)//标题深度 { Microsoft.Office.Interop.Word.Applic

python读取word文档,插入mysql数据库实例

表格内容如下: 1.实现批量导入word文档,取文档标题中的数字作为编号 2.除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql # wuyanfeng# -*- coding:utf-8 -*-# 读取docx中的文本代码示例import docximport pymysqlimport reimport os # 创建数据库链接conn = pymysql.connect( host='rm-bp1vu5d84dg12c6d59o.mysql.rds.aliyuncs.c