poi获取Excel表中图片位置



import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.FileNotFoundException;

import java.io.FilenameFilter;

import java.util.Iterator;

import java.util.List;



import org.apache.poi.hssf.record.EscherAggregate;

import org.apache.poi.ddf.EscherRecord;

import org.apache.poi.ddf.EscherClientAnchorRecord;

import org.apache.poi.ss.usermodel.WorkbookFactory;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;



/**

* 获取Excel表中图片位置

* @author win user

*/

public class cc {





public static void main(String[] args) {

try {

new cc().getImageMatrices("D:/aa.xls");

} catch (Exception ex) {

System.out.println("Caught an: " + ex.getClass().getName());

System.out.println("Message: " + ex.getMessage());

System.out.println("Stacktrace follows:.....");

ex.printStackTrace(System.out);

}

}

public void getImageMatrices(String folderName) throws IOException,

FileNotFoundException, InvalidFormatException {

//File fileFolder = new File(folderName);

//File[] excelWorkbooks = fileFolder.listFiles(new ExcelFilenameFilter());

// for(File excelWorkbook : excelWorkbooks) {

Workbook workbook = WorkbookFactory.create(new FileInputStream(

folderName));

if (workbook instanceof HSSFWorkbook) {

this.processImages((HSSFWorkbook) workbook);

} else {

this.processImages((XSSFWorkbook) workbook);

}

// }

}



private void processImages(HSSFWorkbook workbook) {

EscherAggregate drawingAggregate = null;

HSSFSheet sheet = null;

List<EscherRecord> recordList = null;

Iterator<EscherRecord> recordIter = null;



sheet = workbook.getSheetAt(0);

drawingAggregate = sheet.getDrawingEscherAggregate();

if (drawingAggregate != null) {

recordList = drawingAggregate.getEscherRecords();

recordIter = recordList.iterator();

while (recordIter.hasNext()) {

this.iterateRecords(recordIter.next(), 1);

}

}

//}

}



private void iterateRecords(EscherRecord escherRecord, int level) {

List<EscherRecord> recordList = null;

Iterator<EscherRecord> recordIter = null;

EscherRecord childRecord = null;

recordList = escherRecord.getChildRecords();

recordIter = recordList.iterator();

while (recordIter.hasNext()) {

childRecord = recordIter.next();

if (childRecord instanceof EscherClientAnchorRecord) {



this.printAnchorDetails((EscherClientAnchorRecord) childRecord);

}

if (childRecord.getChildRecords().size() > 0) {

this.iterateRecords(childRecord, ++level);

}

}

}



private void printAnchorDetails(EscherClientAnchorRecord anchorRecord) {

System.out.print("图片左上角  "+anchorRecord.getRow1() +"行  " + anchorRecord.getCol1()+ "列"  + " x坐标:"

+ anchorRecord.getDx1() + "  y坐标:" + anchorRecord.getDy1());

System.out.println("           图片的右下角 "+ anchorRecord.getRow2()+ " 行  "+ anchorRecord.getCol2() +" 列 "+ " x坐标:"

+ anchorRecord.getDx2()+ "  y坐标:" + anchorRecord.getDy2());

}



private void processImages(XSSFWorkbook workbook) {

System.out.println("目前还不支持OOXML  workbooks.Investigating.");

}





public class ExcelFilenameFilter implements FilenameFilter {



public boolean accept(File file, String fileName) {

boolean includeFile = false;

if (fileName.endsWith(".xls") || fileName.endsWith(".xlsx")) {

includeFile = true;

}

return (includeFile);

}

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值