/** * 获取Excel2003图片 * * @param sheet * 当前sheet对象 * @param workbook * 工作簿对象 * @return Map key:图片单元格索引(1_1)String,value:图片流PictureData */ public static Map<String, PictureData> getSheetPictrues03(HSSFSheet sheet, HSSFWorkbook workbook) { Map<String, PictureData> sheetIndexPicMap = new HashMap<String, PictureData>(); List<HSSFPictureData> pictures = workbook.getAllPictures(); if (!pictures.isEmpty()) { for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) { HSSFClientAnchor anchor = (HSSFClientAnchor) shape.getAnchor(); if (shape instanceof HSSFPicture) { HSSFPicture pic = (HSSFPicture) shape; int pictureIndex = pic.getPictureIndex() - 1; HSSFPictureData picData = pictures.get(pictureIndex); String picIndex = String.valueOf(anchor.getRow1()) + "_" + String.valueOf(anchor.getCol1()); sheetIndexPicMap.put(picIndex, picData); } } return sheetIndexPicMap; } else { return sheetIndexPicMap; } }
/** * 获取Excel2003图片 * * @param sheet * 当前sheet对象 * @param workbook * 工作簿对象 * @return Map key:图片单元格索引(1_1)String,value:图片流PictureData */ public static Map<String, PictureData> getSheetPictrues03(HSSFSheet sheet, HSSFWorkbook workbook) { Map<String, PictureData> sheetIndexPicMap = new HashMap<String, PictureData>(); List<HSSFPictureData> pictures = workbook.getAllPictures(); if (!pictures.isEmpty()) { for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) { HSSFClientAnchor anchor = (HSSFClientAnchor) shape.getAnchor(); if (shape instanceof HSSFPicture) { HSSFPicture pic = (HSSFPicture) shape; int pictureIndex = pic.getPictureIndex() - 1; HSSFPictureData picData = pictures.get(pictureIndex); String picIndex = String.valueOf(anchor.getRow1()) + "_" + String.valueOf(anchor.getCol1()); sheetIndexPicMap.put(picIndex, picData); } } return sheetIndexPicMap; } else { return null; } }
private static Table<Integer, Integer, ImageData> readAllCellImages(HSSFPatriarch patriarch, Sheet sheet) { val images = HashBasedTable.<Integer, Integer, ImageData>create(); val allPictures = sheet.getWorkbook().getAllPictures(); for (val shape : patriarch.getChildren()) { if (!(shape instanceof HSSFPicture && shape.getAnchor() instanceof HSSFClientAnchor)) continue; val picture = (HSSFPicture) shape; val imageData = createImageData(allPictures.get(picture.getPictureIndex() - 1)); val axisRow = computeAxisRowIndex(sheet, picture); val axisCol = computeAxisColIndex(sheet, picture); images.put(axisRow, axisCol, imageData); } return images; }
private void processSheetImage(Element htmlBody, HSSFSheet sheet) { // Element h2 = htmlDocumentFacade.createImage(logo); // h2.setAttribute("style", "top:112px;left:300px;position:absolute"); // htmlBody.appendChild( h2 ); if (sheet.getDrawingPatriarch() != null) { final List<HSSFShape> shapes = sheet.getDrawingPatriarch() .getChildren(); for (int i = 0; i < shapes.size(); ++i) { if (shapes.get(i) instanceof HSSFPicture) { try { // Gain access to private field anchor. final HSSFPicture pic = (HSSFPicture) shapes.get(i); picMap.put(pic.getPreferredSize().getCol1()+":"+pic.getPreferredSize().getRow1(), pic); } catch (final Exception e) { throw new RuntimeException(e); } } } } }
private void setImage(final HSSFWorkbook workbook, final HSSFSheet sheet, final CellLocation cellLocation, int width, int height) { POIUtils.setCellValue(sheet, cellLocation, ""); if (imageBuffer != null) { final HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); final HSSFPicture picture = patriarch.createPicture(new HSSFClientAnchor(), pictureIndex); final Dimension dimension = picture.getImageDimension(); final float rate = (float) dimension.width / (float) dimension.height; final float specifiedRate = (float) width / (float) height; if (width == -1 || height == -1) { width = dimension.width; height = dimension.height; } else { if (rate > specifiedRate) { if (dimension.width > width) { height = (int) (width / rate); } else { width = dimension.width; height = dimension.height; } } else { if (dimension.height > height) { width = (int) (height * rate); } else { width = dimension.width; height = dimension.height; } } } final HSSFClientAnchor preferredSize = getPreferredSize(sheet, new HSSFClientAnchor(0, 0, 0, 0, (short) cellLocation.c, cellLocation.r, (short) 0, 0), width, height); picture.setAnchor(preferredSize); } }
private void setImage(HSSFWorkbook workbook, HSSFSheet sheet, CellLocation cellLocation, int width, int height) { POIUtils.setCellValue(sheet, cellLocation, ""); if (this.imageBuffer != null) { HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); HSSFPicture picture = patriarch.createPicture( new HSSFClientAnchor(), this.pictureIndex); Dimension dimension = picture.getImageDimension(); float rate = (float) dimension.width / (float) dimension.height; float specifiedRate = (float) width / (float) height; if (width == -1 || height == -1) { width = dimension.width; height = dimension.height; } else { if (rate > specifiedRate) { if (dimension.width > width) { height = (int) (width / rate); } else { width = dimension.width; height = dimension.height; } } else { if (dimension.height > height) { width = (int) (height * rate); } else { width = dimension.width; height = dimension.height; } } } HSSFClientAnchor preferredSize = this.getPreferredSize(sheet, new HSSFClientAnchor(0, 0, 0, 0, (short) cellLocation.c, cellLocation.r, (short) 0, 0), width, height); picture.setAnchor(preferredSize); } }
private void table(final HSSFSheet sheet) { if (sheet == null) { return; } if (sheet.getDrawingPatriarch() != null) { final List<HSSFShape> shapes = sheet.getDrawingPatriarch() .getChildren(); for (int i = 0; i < shapes.size(); ++i) { if (shapes.get(i) instanceof HSSFPicture) { try { // Gain access to private field anchor. final HSSFShape pic = shapes.get(i); final Field f = HSSFShape.class .getDeclaredField("anchor"); f.setAccessible(true); final HSSFClientAnchor anchor = (HSSFClientAnchor) f .get(pic); // Store picture cell row, column and picture data. if (!pix.containsKey(anchor.getRow1())) { pix.put(anchor.getRow1(), new HashMap<Short, List<HSSFPictureData>>()); } if (!pix.get(anchor.getRow1()).containsKey( anchor.getCol1())) { pix.get(anchor.getRow1()).put(anchor.getCol1(), new ArrayList<HSSFPictureData>()); } pix.get(anchor.getRow1()) .get(anchor.getCol1()) .add(book.getAllPictures().get( ((HSSFPicture) pic).getPictureIndex())); } catch (final Exception e) { throw new RuntimeException(e); } } } } out.append("<table cellspacing='0' style='border-spacing:0; border-collapse:collapse;'>\n"); for (rowIndex = 0; rowIndex < sheet.getPhysicalNumberOfRows(); ++rowIndex) { tr(sheet.getRow(rowIndex)); } out.append("</table>\n"); }
private void table(final HSSFSheet sheet, int startIndex, int endIndex) { if (sheet == null) { return; } if (sheet.getDrawingPatriarch() != null) { final List<HSSFShape> shapes = sheet.getDrawingPatriarch() .getChildren(); for (int i = 0; i < shapes.size(); ++i) { if (shapes.get(i) instanceof HSSFPicture) { try { // Gain access to private field anchor. final HSSFShape pic = shapes.get(i); final Field f = HSSFShape.class .getDeclaredField("anchor"); f.setAccessible(true); final HSSFClientAnchor anchor = (HSSFClientAnchor) f .get(pic); // Store picture cell row, column and picture data. if (!pix.containsKey(anchor.getRow1())) { pix.put(anchor.getRow1(), new HashMap<Short, List<HSSFPictureData>>()); } if (!pix.get(anchor.getRow1()).containsKey( anchor.getCol1())) { pix.get(anchor.getRow1()).put(anchor.getCol1(), new ArrayList<HSSFPictureData>()); } pix.get(anchor.getRow1()) .get(anchor.getCol1()) .add(book.getAllPictures().get( ((HSSFPicture) pic).getPictureIndex())); } catch (final Exception e) { throw new RuntimeException(e); } } } } out.append("<table id=\"" + "rvs_table" + "\" width=\"900\" class=\"mt\">\n"); tr(sheet.getRow(0)); StringBuffer buf = new StringBuffer(); tr(sheet.getRow(0), buf); String t = buf.toString(); resolvedValueSetList.add(t); for (int i=startIndex; i<=endIndex; i++) { tr(sheet.getRow(i)); buf = new StringBuffer(); tr(sheet.getRow(i), buf); t = buf.toString(); resolvedValueSetList.add(t); } out.append("</table>\n"); resolvedValueSetIterator = resolvedValueSetList.listIterator(); }