最近公司有叫统计一些数据,我觉得太繁琐了就上网了解了一下poi,就用java处理了一下数据。今天我就通过它来做简单的抽取word文档中图片,并把图片另存在文件夹中。(刚了解POI,所以有什么不对,大家也可以一起来说说)。 Apache POI 是一个很不错的组件,它主要用来 解析 microsoft word,ppt,excel,Visio 文档,通过它可以用java来操作word、excel等。 package com.repair.user.impl;
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.UUID;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.model.PicturesTable; import org.apache.poi.hwpf.usermodel.CharacterRun; import org.apache.poi.hwpf.usermodel.Picture; import org.apache.poi.hwpf.usermodel.Range;
public class readWordPicture {
/** * @param args */ public static void main(String[] args) { try { readPicture('E:/test1.doc'); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //抽取图片 private static void readPicture(String path)throws Exception{ FileInputStream in=new FileInputStream(new File(path)); //这个构造函数从InputStream中加载Word文档。 HWPFDocument doc=new HWPFDocument(in); //文档字符长度 int length=doc.characterLength();
//负责图像提取 和 确定一些文件某块是否包含嵌入的图像。 PicturesTable pTable=doc.getPicturesTable(); for (int i=0;i //这个类为HWPF对象模型,对文档范围段操作 Range range=new Range(i, i+1,doc);
//这个类表示一个文本运行,有着共同的属性。 CharacterRun cr=range.getCharacterRun(0);
//是否存在图片 if(pTable.hasPicture(cr)){ //返回图片对象绑定到指定的CharacterRun Picture pic=pTable.extractPicture(cr, false); //获取图片名称(包括后缀名) String afileName=pic.suggestFullFileName(); //创建图片指定的输出流。 OutputStream out=new FileOutputStream(new File('E:\\图片test\\'+UUID.randomUUID()+afileName)); //图片的内容字节写入到指定的输出流。 pic.writeImageContent(out);
} }
} }
链接:https://pan.baidu.com/s/1oAkj1qU 密码:lojy
|