poi获取Excel表中图片位置

来源:互联网 发布:淘宝店铺装修教程2016 编辑:程序博客网 时间:2024/05/20 03:42



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