Example usage for org.apache.poi.ss.usermodel PictureData getData

List of usage examples for org.apache.poi.ss.usermodel PictureData getData

Introduction

In this page you can find the example usage for org.apache.poi.ss.usermodel PictureData getData.

Prototype

byte[] getData();

Source Link

Document

Gets the picture data.

Usage

From source file:cn.afterturn.easypoi.excel.imports.ExcelImportService.java

License:Apache License

/**
 * @param object//from   w  w w.j  a v  a 2s . com
 * @param picId
 * @param excelParams
 * @param titleString
 * @param pictures
 * @param params
 * @throws Exception
 */
private void saveImage(Object object, String picId, Map<String, ExcelImportEntity> excelParams,
        String titleString, Map<String, PictureData> pictures, ImportParams params) throws Exception {
    if (pictures == null) {
        return;
    }
    PictureData image = pictures.get(picId);
    if (image == null) {
        return;
    }
    byte[] data = image.getData();
    String fileName = "pic" + Math.round(Math.random() * 100000000000L);
    fileName += "." + PoiPublicUtil.getFileExtendName(data);
    if (excelParams.get(titleString).getSaveType() == 1) {
        String path = getSaveUrl(excelParams.get(titleString), object);
        File savefile = new File(path);
        if (!savefile.exists()) {
            savefile.mkdirs();
        }
        savefile = new File(path + File.separator + fileName);
        FileOutputStream fos = new FileOutputStream(savefile);
        try {
            fos.write(data);
        } finally {
            IOUtils.closeQuietly(fos);
        }
        setValues(excelParams.get(titleString), object,
                getSaveUrl(excelParams.get(titleString), object) + File.separator + fileName);
    } else {
        setValues(excelParams.get(titleString), object, data);
    }
}

From source file:cn.bzvs.excel.imports.ExcelImportServer.java

License:Apache License

/**
 * //w w w . j a v a 2 s .c o m
 * @param object
 * @param picId
 * @param excelParams
 * @param titleString
 * @param pictures
 * @param params
 * @throws Exception
 */
private void saveImage(Object object, String picId, Map<String, ExcelImportEntity> excelParams,
        String titleString, Map<String, PictureData> pictures, ImportParams params) throws Exception {
    if (pictures == null) {
        return;
    }
    PictureData image = pictures.get(picId);
    if (image == null) {
        return;
    }
    byte[] data = image.getData();
    String fileName = "pic" + Math.round(Math.random() * 100000000000L);
    fileName += "." + PoiPublicUtil.getFileExtendName(data);
    if (excelParams.get(titleString).getSaveType() == 1) {
        String path = PoiPublicUtil.getWebRootPath(getSaveUrl(excelParams.get(titleString), object));
        File savefile = new File(path);
        if (!savefile.exists()) {
            savefile.mkdirs();
        }
        savefile = new File(path + "/" + fileName);
        FileOutputStream fos = new FileOutputStream(savefile);
        try {
            fos.write(data);
        } finally {
            IOUtils.closeQuietly(fos);
        }
        setValues(excelParams.get(titleString), object,
                getSaveUrl(excelParams.get(titleString), object) + "/" + fileName);
    } else {
        setValues(excelParams.get(titleString), object, data);
    }
}

From source file:com.actelion.research.spiritapp.ui.util.PDFUtils.java

License:Open Source License

public static void convertHSSF2Pdf(Workbook wb, String header, File reportFile) throws Exception {
    assert wb != null;
    assert reportFile != null;

    //Precompute formula
    FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
    for (int i = 0; i < wb.getNumberOfSheets(); i++) {
        Sheet sheet = wb.getSheetAt(i);// w w  w. j av a 2  s.co  m

        for (Row r : sheet) {
            for (Cell c : r) {
                if (c.getCellType() == HSSFCell.CELL_TYPE_FORMULA) {
                    try {
                        evaluator.evaluateFormulaCell(c);
                    } catch (Exception e) {
                        System.err.println(e);
                    }
                }
            }
        }
    }

    File tmp = File.createTempFile("tmp_", ".xlsx");
    try (OutputStream out = new BufferedOutputStream(new FileOutputStream(tmp))) {
        wb.write(out);
    }

    //Find page orientation
    int maxColumnsGlobal = 0;
    for (int sheetNo = 0; sheetNo < wb.getNumberOfSheets(); sheetNo++) {
        Sheet sheet = wb.getSheetAt(sheetNo);
        for (Iterator<Row> rowIterator = sheet.iterator(); rowIterator.hasNext();) {
            Row row = rowIterator.next();
            maxColumnsGlobal = Math.max(maxColumnsGlobal, row.getLastCellNum());
        }
    }

    Rectangle pageSize = maxColumnsGlobal < 10 ? PageSize.A4 : PageSize.A4.rotate();
    Document pdfDocument = new Document(pageSize, 10f, 10f, 20f, 20f);

    PdfWriter writer = PdfWriter.getInstance(pdfDocument, new FileOutputStream(reportFile));
    addHeader(writer, header);
    pdfDocument.open();
    //we have two columns in the Excel sheet, so we create a PDF table with two columns
    //Note: There are ways to make this dynamic in nature, if you want to.
    //Loop through sheets
    for (int sheetNo = 0; sheetNo < wb.getNumberOfSheets(); sheetNo++) {
        Sheet sheet = wb.getSheetAt(sheetNo);

        //Loop through rows, to find number of columns
        int minColumns = 1000;
        int maxColumns = 0;
        for (Iterator<Row> rowIterator = sheet.iterator(); rowIterator.hasNext();) {
            Row row = rowIterator.next();
            if (row.getFirstCellNum() >= 0)
                minColumns = Math.min(minColumns, row.getFirstCellNum());
            if (row.getLastCellNum() >= 0)
                maxColumns = Math.max(maxColumns, row.getLastCellNum());
        }
        if (maxColumns == 0)
            continue;

        //Loop through first rows, to find relative width
        float[] widths = new float[maxColumns];
        int totalWidth = 0;
        for (int c = 0; c < maxColumns; c++) {
            int w = sheet.getColumnWidth(c);
            widths[c] = w;
            totalWidth += w;
        }

        for (int c = 0; c < maxColumns; c++) {
            widths[c] /= totalWidth;
        }

        //Create new page and a new chapter with the sheet's name
        if (sheetNo > 0)
            pdfDocument.newPage();
        Chapter pdfSheet = new Chapter(sheet.getSheetName(), sheetNo + 1);

        PdfPTable pdfTable = null;
        PdfPCell pdfCell = null;
        boolean inTable = false;

        //Loop through cells, to create the content
        //         boolean leftBorder = true;
        //         boolean[] topBorder = new boolean[maxColumns+1];
        for (int r = 0; r <= sheet.getLastRowNum(); r++) {
            Row row = sheet.getRow(r);

            //Check if we exited a table (empty line)
            if (row == null) {
                if (pdfTable != null) {
                    addTable(pdfDocument, pdfSheet, totalWidth, widths, pdfTable);
                    pdfTable = null;
                }
                inTable = false;
                continue;
            }

            //Check if we start a table (>MIN_COL_IN_TABLE columns)
            if (row.getLastCellNum() >= MIN_COL_IN_TABLE) {
                inTable = true;
            }

            if (!inTable) {
                //Process the data outside table, just add the text
                boolean hasData = false;
                Iterator<Cell> cellIterator = row.cellIterator();
                while (cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();
                    if (cell.getCellType() == Cell.CELL_TYPE_BLANK)
                        continue;
                    Chunk chunk = getChunk(wb, cell);
                    pdfSheet.add(chunk);
                    pdfSheet.add(new Chunk(" "));
                    hasData = true;
                }
                if (hasData)
                    pdfSheet.add(Chunk.NEWLINE);

            } else {
                //Process the data in table
                if (pdfTable == null) {
                    //Create table
                    pdfTable = new PdfPTable(maxColumns);
                    pdfTable.setWidths(widths);
                    //                  topBorder = new boolean[maxColumns+1];
                }

                int cellNumber = minColumns;
                //               leftBorder = false;
                Iterator<Cell> cellIterator = row.cellIterator();
                while (cellIterator.hasNext()) {

                    Cell cell = cellIterator.next();

                    for (; cellNumber < cell.getColumnIndex(); cellNumber++) {
                        pdfCell = new PdfPCell();
                        pdfCell.setBorder(0);
                        pdfTable.addCell(pdfCell);
                    }

                    Chunk phrase = getChunk(wb, cell);
                    pdfCell = new PdfPCell(new Phrase(phrase));
                    pdfCell.setFixedHeight(row.getHeightInPoints() - 3);
                    pdfCell.setNoWrap(!cell.getCellStyle().getWrapText());
                    pdfCell.setPaddingLeft(1);
                    pdfCell.setHorizontalAlignment(
                            cell.getCellStyle().getAlignment() == CellStyle.ALIGN_CENTER ? PdfPCell.ALIGN_CENTER
                                    : cell.getCellStyle().getAlignment() == CellStyle.ALIGN_RIGHT
                                            ? PdfPCell.ALIGN_RIGHT
                                            : PdfPCell.ALIGN_LEFT);
                    pdfCell.setUseBorderPadding(false);
                    pdfCell.setUseVariableBorders(false);
                    pdfCell.setBorderWidthRight(cell.getCellStyle().getBorderRight() == 0 ? 0 : .5f);
                    pdfCell.setBorderWidthBottom(cell.getCellStyle().getBorderBottom() == 0 ? 0
                            : cell.getCellStyle().getBorderBottom() > 1 ? 1 : .5f);
                    pdfCell.setBorderWidthLeft(cell.getCellStyle().getBorderLeft() == 0 ? 0
                            : cell.getCellStyle().getBorderLeft() > 1 ? 1 : .5f);
                    pdfCell.setBorderWidthTop(cell.getCellStyle().getBorderTop() == 0 ? 0
                            : cell.getCellStyle().getBorderTop() > 1 ? 1 : .5f);
                    String color = cell.getCellStyle().getFillForegroundColorColor() == null ? null
                            : ((XSSFColor) cell.getCellStyle().getFillForegroundColorColor()).getARGBHex();
                    if (color != null)
                        pdfCell.setBackgroundColor(new Color(Integer.decode("0x" + color.substring(2))));
                    pdfTable.addCell(pdfCell);
                    cellNumber++;
                }
                for (; cellNumber < maxColumns; cellNumber++) {
                    pdfCell = new PdfPCell();
                    pdfCell.setBorder(0);
                    pdfTable.addCell(pdfCell);
                }
            }

            //Custom code to add all images on the first sheet (works for reporting)
            if (sheetNo == 0 && row.getRowNum() == 0) {
                for (PictureData pd : wb.getAllPictures()) {
                    try {
                        Image pdfImg = Image.getInstance(pd.getData());
                        pdfImg.scaleToFit(
                                pageSize.getWidth() * .8f - pageSize.getBorderWidthLeft()
                                        - pageSize.getBorderWidthRight(),
                                pageSize.getHeight() * .8f - pageSize.getBorderWidthTop()
                                        - pageSize.getBorderWidthBottom());
                        pdfSheet.add(pdfImg);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        if (pdfTable != null) {
            addTable(pdfDocument, pdfSheet, totalWidth, widths, pdfTable);
        }

        pdfDocument.add(pdfSheet);
    }
    pdfDocument.close();

}

From source file:com.qihang.winter.poi.excel.imports.ExcelImportServer.java

License:Apache License

/**
 *
 * @param object//from w w w .j a  v a  2 s  .c om
 * @param picId
 * @param excelParams
 * @param titleString
 * @param pictures
 * @param params
 * @throws Exception
 */
private void saveImage(Object object, String picId,
        Map<String, com.qihang.winter.poi.excel.entity.params.ExcelImportEntity> excelParams,
        String titleString, Map<String, PictureData> pictures,
        com.qihang.winter.poi.excel.entity.ImportParams params) throws Exception {
    if (pictures == null) {
        return;
    }
    PictureData image = pictures.get(picId);
    byte[] data = image.getData();
    String fileName = "pic" + Math.round(Math.random() * 100000000000L);
    fileName += "." + com.qihang.winter.poi.util.PoiPublicUtil.getFileExtendName(data);
    if (excelParams.get(titleString).getSaveType() == 1) {
        String path = com.qihang.winter.poi.util.PoiPublicUtil
                .getWebRootPath(getSaveUrl(excelParams.get(titleString), object));
        File savefile = new File(path);
        if (!savefile.exists()) {
            savefile.mkdirs();
        }
        savefile = new File(path + "/" + fileName);
        FileOutputStream fos = new FileOutputStream(savefile);
        fos.write(data);
        fos.close();
        setValues(excelParams.get(titleString), object,
                getSaveUrl(excelParams.get(titleString), object) + "/" + fileName);
    } else {
        setValues(excelParams.get(titleString), object, data);
    }
}

From source file:info.informationsea.tableio.excel.test.ExcelImageWriterTest.java

License:Open Source License

@Test
public void testWriteImage() throws Exception {
    File buildDir = new File(System.getProperty("user.dir"), "build");
    File testOutput = new File(buildDir, "test-data");
    testOutput.mkdirs();/*from ww  w  . j ava 2 s.  c  om*/

    SXSSFWorkbook workbook = new SXSSFWorkbook();
    TableWorkbookWriter workbookWriter = new ExcelWorkbookWriter(workbook);
    ImageSheetWriter imageSheetWriter = workbookWriter.createImageSheet("testsheet");
    imageSheetWriter.addImage(ExcelImageSheetWriter.ImageType.TYPE_JPEG,
            IOUtils.toByteArray(getClass().getResourceAsStream("ashinari-osaka.jpg")));
    imageSheetWriter.addImage(ExcelImageSheetWriter.ImageType.TYPE_PNG,
            IOUtils.toByteArray(getClass().getResourceAsStream("ashinari-momiji.png")));

    List<? extends PictureData> list = workbook.getAllPictures();
    for (PictureData one : list) {
        if (one.suggestFileExtension().endsWith("jpeg")) {
            Assert.assertArrayEquals(IOUtils.toByteArray(getClass().getResourceAsStream("ashinari-osaka.jpg")),
                    one.getData());
        } else if (one.suggestFileExtension().endsWith("png")) {
            Assert.assertArrayEquals(IOUtils.toByteArray(getClass().getResourceAsStream("ashinari-momiji.png")),
                    one.getData());
        } else {
            Assert.fail();
        }
    }

    try (FileOutputStream outputStream = new FileOutputStream(new File(testOutput, "image.xlsx"))) {
        workbook.write(outputStream);
    }
}

From source file:org.jeecgframework.poi.excel.imports.ExcelImportServer.java

License:Apache License

/**
 * //from w w  w .ja  v  a  2 s. c  om
 * @param object
 * @param picId
 * @param excelParams
 * @param titleString
 * @param pictures
 * @param params
 * @throws Exception
 */
private void saveImage(Object object, String picId, Map<String, ExcelImportEntity> excelParams,
        String titleString, Map<String, PictureData> pictures, ImportParams params) throws Exception {
    if (pictures == null) {
        return;
    }
    PictureData image = pictures.get(picId);
    byte[] data = image.getData();
    String fileName = "pic" + Math.round(Math.random() * 100000000000L);
    fileName += "." + PoiPublicUtil.getFileExtendName(data);
    if (excelParams.get(titleString).getSaveType() == 1) {
        String path = PoiPublicUtil.getWebRootPath(getSaveUrl(excelParams.get(titleString), object));
        File savefile = new File(path);
        if (!savefile.exists()) {
            savefile.mkdirs();
        }
        savefile = new File(path + "/" + fileName);
        FileOutputStream fos = new FileOutputStream(savefile);
        fos.write(data);
        fos.close();
        setValues(excelParams.get(titleString), object,
                getSaveUrl(excelParams.get(titleString), object) + "/" + fileName);
    } else {
        setValues(excelParams.get(titleString), object, data);
    }
}

From source file:org.tiefaces.components.websheet.service.TieWebSheetPicturesService.java

License:MIT License

/**
 * Return picture to web front end.//from   w  w w  .j  av a  2 s .  com
 *
 * @return empty (phase is render_response) or real picture ( browser
 *         request).
 */
public StreamedContent getPicture() {
    FacesContext context = FacesContext.getCurrentInstance();

    if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
        // So, we're rendering the HTML. Return a stub StreamedContent so
        // that it will generate right URL.
        LOG.fine(" return empty picture");
        return new DefaultStreamedContent();
    } else {
        // So, browser is requesting the image. Return a real
        // StreamedContent with the image bytes.
        String pictureId = context.getExternalContext().getRequestParameterMap().get("pictureViewId");

        PictureData picData = (PictureData) FacesContext.getCurrentInstance().getExternalContext()
                .getSessionMap().get(pictureId);
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(pictureId);
        LOG.fine(" return real picture and remove session");
        return new DefaultStreamedContent(new ByteArrayInputStream(picData.getData()));
    }
}