poi对word2003或者2007的图片读取和写入操作

原创 2016年08月30日 10:15:48

poi对word2003或者2007的图片读取和写入操作

1.word2003版doc读取某个标签所在位置的值或者图片

HWPFDocument docDocument = new HWPFDocument(is);
org.apache.poi.hwpf.usermodel.Bookmarks bookmarks =     docDocument.getBookmarks();
PicturesTable picturesTable = docDocument.getPicturesTable();
System.out.println("图片数量: " +     picturesTable.getAllPictures().size());
List<Picture> list = picturesTable.getAllPictures();
Map<String, String> result = new HashMap<String, String>();
int count = bookmarks.getBookmarksCount();
for (int i = 0; i < count; i++) {
    Range range = new Range(bookmarks.getBookmark(i).getStart(),  bookmarks.getBookmark(i).getEnd(), docDocument);
    CharacterRun cr = range.getCharacterRun(0);
    if (picturesTable.hasPicture(cr)) {
        Picture pic = picturesTable.extractPicture(cr, true); //获得的图片
    }else{ //如果标签是文本的话,取出标签所在位置的值
        if (range.text().equals("")) {                     result.put(bookmarks.getBookmark(i).getName(), null);
        } else {                   result.put(bookmarks.getBookmark(i).getName(), "\"" + range.text() + "\"");
        }
    }

docx文件图片的写入某个特点标签位置;对图片写入poi jar中的方法存在错误,要自己继承XWPFDocument,重写写入图片的方法

for (BookMark item : bookMarks.getBookmarkList()) {
    File pic = new File("/Users/ycc/Desktop/13d0.png");
    FileInputStream is = new FileInputStream(pic);
    if (item.getBookmarkName().equals("logo2")) {
        String ind = docxDocument.addPictureData(is, docxDocument.PICTURE_TYPE_PNG);//不同版本的poi jar中没有addPicutre(is,docxDocument.PICTURE_TYPE_PNG);返回int。createPicture函数的第一个值可以用docxDocument.getAllPictures().size()-1代替
        XWPFParagraph pargraph = item.getContainerTableRow().getCell(0).addParagraph();//图片标签一定要在某个表格的单元格中
    if (docxDocument.getAllPictures() == null || docxDocument.getAllPictures().isEmpty()) {
    docxDocument.createPicture(0, 100, 150, pargraph); //100是宽 ,150高
    } else {
 docxDocument.createPicture(docxDocument.getAllPictures().size() - 1, 100, 150, pargraph);
}}
System.out.println("测试一下: " + docxDocument.getAllPictures().size());
FileOutputStream fos = new FileOutputStream("/Users/ycc/Desktop/testcopy.docx");
docxDocument.write(fos);
fos.flush();
fos.close();

研究很久,并发现java poi不能处理word2003版的图片插入问题,希望大家能提出好的建议和意见

后面有读取word模版文件,生成表单,生成文件和将生成的文件还原成表单进行修改的方法,包括下拉框的处理。

1.有人会问为什么不直接修改word文档,因为一旦在文档中设置标签之后,当对某个标签位置的内容进行修改后,标签就不见了,因此需要通过代码来对文件进行修改。
2.java poi对word的支持并不好,尤其是对word2003版的支持更少,所以如果需要对word进行处理,可以考虑pageOffice。
3.对于标签的理解,java poi中其实是获得不到所谓的标签的,标签其实也是单元格中的数据,具体的看附件中的bookmark和bookmarks两个类。
http://download.csdn.net/detail/u011376686/9615949 相关代码下载地址

版权声明:本文为博主原创文章,未经博主允许不得转载。

利用POI操作不同版本word文档中的图片以及创建word文档

我们都知道要想利用java对office操作最常用的技术就应该是POI了,在这里本人就不多说究竟POI是什么和怎么用了。先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据...
  • WillCold
  • WillCold
  • 2014年10月10日 21:56
  • 4852

POI插入图片

引入的包 import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.Fi...
  • jaysuper
  • jaysuper
  • 2013年03月18日 15:10
  • 3922

poi 图片解析-定位与读取

java学习记录(6)- poi 图片解析-定位与读取提要: 引言 代码 总结 1 引言:把excel中的内容转换到数据库中,是一个常见的工作。 而如果excel中有图片应该如何进行图片的操作,以及确...
  • ouyangziling
  • ouyangziling
  • 2017年09月23日 19:07
  • 220

利用POI抽取word中的图片并保存在文件中

1.抽取word doc中的图片 package parse; import java.io.*; import java.util.*; import org.apache.poi.hwpf...
  • u013510614
  • u013510614
  • 2016年07月20日 11:01
  • 4635

用POI获取excel表中的图片位置及数据

因项目原因,需要用Apache的POI读取excel文档中行数据及每行的图片,把行数据和图片作为一条记录保存到数据库中。网上搜索到的资料多数没法定位图片的位置,也就无法把图片关联到行数据中。在一国外的...
  • dym3093
  • dym3093
  • 2016年03月02日 22:22
  • 3583

Java的POI修改Word文档(包括图片替换)

  • 2015年02月01日 19:30
  • 11KB
  • 下载

POI Word 模板 文字 图片 替换

POI Word 模板 文字 图片 替换 博客分类:  java poi POIjavaWOrd  实验环境:POI3.7+Word2007 Word模板: ...
  • jeff2007
  • jeff2007
  • 2015年01月30日 16:12
  • 8303

POI生成word时插入图片的bug与修复

POI最新版本在生成word文档时,插入图片不显示。 这里有一个解决办法, http://www.it165.net/pro/html/201108/451.html addPict...
  • KimmKing
  • KimmKing
  • 2012年11月20日 14:30
  • 12119

poi导入图片到word

package com.inspur.mng.project.config.action; import java.io.IOException; import java.io.InputStre...
  • bdy9600
  • bdy9600
  • 2015年06月09日 14:06
  • 900

java POI实现向Excel中插入图片

做Web开发免不了要与Excel打交道。今天老大给我一个任务-导出Excel。开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可。但是有一点不同,就是要加入图片,就是这个加入...
  • chenssy
  • chenssy
  • 2014年03月05日 08:59
  • 44011
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poi对word2003或者2007的图片读取和写入操作
举报原因:
原因补充:

(最多只允许输入30个字)