Java Code Examples for org.apache.poi.ss.usermodel.Drawing#createPicture()
The following examples show how to use
org.apache.poi.ss.usermodel.Drawing#createPicture() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AbstractExcelWriteExecutor.java From easyexcel with Apache License 2.0 | 7 votes |
private void setImageValue(CellData cellData, Cell cell) { Sheet sheet = cell.getSheet(); int index = sheet.getWorkbook().addPicture(cellData.getImageValue(), HSSFWorkbook.PICTURE_TYPE_PNG); Drawing drawing = sheet.getDrawingPatriarch(); if (drawing == null) { drawing = sheet.createDrawingPatriarch(); } CreationHelper helper = sheet.getWorkbook().getCreationHelper(); ClientAnchor anchor = helper.createClientAnchor(); anchor.setDx1(0); anchor.setDx2(0); anchor.setDy1(0); anchor.setDy2(0); anchor.setCol1(cell.getColumnIndex()); anchor.setCol2(cell.getColumnIndex() + 1); anchor.setRow1(cell.getRowIndex()); anchor.setRow2(cell.getRowIndex() + 1); anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE); drawing.createPicture(anchor, index); }
Example 2
Source File: WatermarkExcelTests.java From kbase-doc with Apache License 2.0 | 5 votes |
@Test public void test2() throws IOException { //create a new workbook XSSFWorkbook wb = new XSSFWorkbook(); //or new HSSFWorkbook(); String imgPath = "D:\\Xiaoi\\logo\\logo.png"; //add picture data to this workbook. InputStream is = new FileInputStream(imgPath); byte[] bytes = IOUtils.toByteArray(is); int pictureIdx = wb.addPicture(bytes, XSSFWorkbook.PICTURE_TYPE_PNG); is.close(); CreationHelper helper = wb.getCreationHelper(); //create sheet Sheet sheet = wb.createSheet(); // Create the drawing patriarch. This is the top level container for all shapes. Drawing drawing = sheet.createDrawingPatriarch(); //add a picture shape ClientAnchor anchor = helper.createClientAnchor(); //set top-left corner of the picture, //subsequent call of Picture#resize() will operate relative to it anchor.setCol1(3); anchor.setRow1(2); anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE); Picture pict = drawing.createPicture(anchor, pictureIdx); //auto-size picture relative to its top-left corner pict.resize(); //save workbook String file = "E:\\ConvertTester\\excel\\picture.xls"; if(wb instanceof XSSFWorkbook) file += "x"; try (OutputStream fileOut = new FileOutputStream(file)) { wb.write(fileOut); } }
Example 3
Source File: AbstractExcelFactory.java From myexcel with Apache License 2.0 | 4 votes |
private void setImage(Td td, Sheet sheet) { if (td.getFile() == null) { return; } try { if (createHelper == null) { createHelper = workbook.getCreationHelper(); } byte[] bytes = Files.readAllBytes(td.getFile().toPath()); String fileName = td.getFile().getName(); int format; String suffix = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); switch (suffix) { case "jpg": case "jpeg": format = Workbook.PICTURE_TYPE_JPEG; break; case "png": format = Workbook.PICTURE_TYPE_PNG; break; case "dib": format = Workbook.PICTURE_TYPE_DIB; break; case "emf": format = Workbook.PICTURE_TYPE_EMF; break; case "pict": format = Workbook.PICTURE_TYPE_PICT; break; case "wmf": format = Workbook.PICTURE_TYPE_WMF; break; default: throw new IllegalArgumentException("Invalid image type"); } int pictureIdx = workbook.addPicture(bytes, format); Drawing drawing = sheet.createDrawingPatriarch(); ClientAnchor anchor = createHelper.createClientAnchor(); anchor.setCol1(td.getCol()); anchor.setRow1(td.getRow()); Picture pict = drawing.createPicture(anchor, pictureIdx); pict.resize(1, 1); } catch (IOException e) { throw new RuntimeException(e); } }
Example 4
Source File: ExcelExportOfTemplateUtil.java From jeewx with Apache License 2.0 | 4 votes |
/** * 图片类型的Cell * * @param patriarch * * @param entity * @param row * @param i * @param string * @param obj * @param workbook * @throws Exception */ private static void createImageCell(Drawing patriarch, ExcelExportEntity entity, Row row, int i, String field, Object obj, Workbook workbook) throws Exception { if(StringUtils.isEmpty(field)){return;} row.setHeight((short) (50 * entity.getHeight())); row.createCell(i); ClientAnchor anchor = workbook instanceof HSSFWorkbook? new HSSFClientAnchor(0, 0, 0, 0, (short) i, row.getRowNum(), (short) (i + 1), row.getRowNum() + 1): new XSSFClientAnchor(0, 0, 0, 0, (short) i, row.getRowNum(), (short) (i + 1), row.getRowNum() + 1); if (entity.getExportImageType() == 1) { ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); BufferedImage bufferImg; try { String path = ExcelExportOfTemplateUtil.class.getClassLoader() .getResource("") + field; path = path.replace("WEB-INF/classes/", ""); path = path.replace("file:/", ""); bufferImg = ImageIO.read(new File(path)); ImageIO.write( bufferImg, field.substring(field.indexOf(".") + 1, field.length()), byteArrayOut); patriarch.createPicture( anchor, row.getSheet() .getWorkbook() .addPicture(byteArrayOut.toByteArray(), Workbook.PICTURE_TYPE_JPEG)); } catch (IOException e) { e.printStackTrace(); } } else { byte[] value = (byte[]) (entity.getGetMethods() != null ? getFieldBySomeMethod( entity.getGetMethods(), obj) : entity.getGetMethod() .invoke(obj, new Object[] {})); if (value != null) { patriarch.createPicture(anchor, row.getSheet().getWorkbook() .addPicture(value, Workbook.PICTURE_TYPE_JPEG)); } } }
Example 5
Source File: PageHandler.java From birt with Eclipse Public License 1.0 | 4 votes |
/** * <p> * Process a CellImage from the images list and place the image on the sheet. * </p><p> * This involves changing the row height as necesssary and determining the column spread of the image. * </p> * @param cellImage * The image to be placed on the sheet. */ private void processCellImage( HandlerState state, Drawing drawing, CellImage cellImage ) { Coordinate location = cellImage.location; Cell cell = state.currentSheet.getRow( location.getRow() ).getCell( location.getCol() ); IImageContent image = cellImage.image; StyleManagerUtils smu = state.getSmu(); float ptHeight = cell.getRow().getHeightInPoints(); if( image.getHeight() != null ) { ptHeight = smu.fontSizeInPoints( image.getHeight().toString() ); } // Get image width int endCol = cell.getColumnIndex(); double lastColWidth = ClientAnchorConversions.widthUnits2Millimetres( (short)state.currentSheet.getColumnWidth( endCol ) ) + 2.0; int dx = smu.anchorDxFromMM( lastColWidth, lastColWidth ); double mmWidth = 0.0; if( smu.isAbsolute(image.getWidth())) { mmWidth = image.getWidth().convertTo(DimensionType.UNITS_MM); } else if(smu.isPixels(image.getWidth())) { mmWidth = ClientAnchorConversions.pixels2Millimetres( image.getWidth().getMeasure() ); } // Allow image to span multiple columns CellRangeAddress mergedRegion = getMergedRegionBegunBy( state.currentSheet, location.getRow(), location.getCol() ); if( (cellImage.spanColumns) || ( mergedRegion != null ) ) { log.debug( "Image size: ", image.getWidth(), " translates as mmWidth = ", mmWidth ); if( mmWidth > 0) { double mmAccumulatedWidth = 0; int endColLimit = cellImage.spanColumns ? 256 : mergedRegion.getLastColumn(); for( endCol = cell.getColumnIndex(); mmAccumulatedWidth < mmWidth && endCol < endColLimit; ++ endCol ) { lastColWidth = ClientAnchorConversions.widthUnits2Millimetres( (short)state.currentSheet.getColumnWidth( endCol ) ) + 2.0; mmAccumulatedWidth += lastColWidth; log.debug( "lastColWidth = ", lastColWidth, "; mmAccumulatedWidth = ", mmAccumulatedWidth); } if( mmAccumulatedWidth > mmWidth ) { mmAccumulatedWidth -= lastColWidth; --endCol; double mmShort = mmWidth - mmAccumulatedWidth; dx = smu.anchorDxFromMM( mmShort, lastColWidth ); } } } else { float widthRatio = (float)(mmWidth / lastColWidth); ptHeight = ptHeight / widthRatio; } int rowsSpanned = state.findRowsSpanned( cell.getRowIndex(), cell.getColumnIndex() ); float neededRowHeightPoints = ptHeight; for( int i = 0; i < rowsSpanned; ++i ) { int rowIndex = cell.getRowIndex() + 1 + i; neededRowHeightPoints -= state.currentSheet.getRow(rowIndex).getHeightInPoints(); } if( neededRowHeightPoints > cell.getRow().getHeightInPoints()) { cell.getRow().setHeightInPoints( neededRowHeightPoints ); } // ClientAnchor anchor = wb.getCreationHelper().createClientAnchor(); ClientAnchor anchor = state.getWb().getCreationHelper().createClientAnchor(); anchor.setCol1(cell.getColumnIndex()); anchor.setRow1(cell.getRowIndex()); anchor.setCol2(endCol); anchor.setRow2(cell.getRowIndex() + rowsSpanned); anchor.setDx2(dx); anchor.setDy2( smu.anchorDyFromPoints( ptHeight, cell.getRow().getHeightInPoints() ) ); anchor.setAnchorType(ClientAnchor.MOVE_DONT_RESIZE); drawing.createPicture(anchor, cellImage.imageIdx); }