POI를 사용하여 이미지 내보내기 기능 및 Url을 하이퍼링크로 내보내기 설정

2987 단어
1. Excel 내보내기 이미지 요구 사항 배경
최근 한 항목은 시험 인원을 대상으로 사진을 찍어서 찍은 사진을 엑셀로 내보내는 것이다. 시험을 통해 엑셀로 내보내는 것은 확실하지만 실용성이 강하지 않다. 만약에 한 시험에서 50명이 계산하면 한 사람이 사진을 3장 찍으면 평균 사진 2M, 2*3*50은 적어도 300M의 크기가 있고 그림의 길이가 너무 넓어서 엑셀에서 보여주기에 적합하지 않다.그리고 내보낸 후에 이 Excel 파일이 너무 커도;파일이 너무 느리게 열립니다.따라서 일반적인 사용자의 기본 정보에 적합한 Excel로 그림을 내보냅니다. 만약에 개인의 1인치 사진 등등.이 방안에 대해 우리는 다음에 말한 그림을 내보내는 접근 주소 Url을 사용하고 링크를 직접 눌러서 접근할 수 있도록 포맷하기로 결정했다.
1.1 그림을 Excel로 내보내고 좌표에 삽입
관련 방법 매개 변수 설명
//HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)에 대한 매개 변수,
여기서 설명할 필요가 있다.
//dx1: 시작 셀의 x 편이량,//dy1: 시작 셀의 y 편이량,
//dx2: 셀의 x 오프셋을 종료하고,//dy2: 셀의 y 오프셋을 종료하고,
//col1: 시작 셀 열 번호, 0부터 계산;//row1: 시작 셀 줄 번호, 0부터 계산,
//col2: 셀 열 번호를 종료하고 0부터 계산합니다.//row2: 셀 줄 번호를 종료하고 0부터 계산합니다.
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();  
BufferedImage bufferImg = ImageIO.read(new File(strAppRootPath + "images/" + "bxlogo.png"));  
ImageIO.write(bufferImg, "png", byteArrayOut);  
  
HSSFPatriarch patriarch = (HSSFPatriarch) sheet.createDrawingPatriarch();  
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 150, 1000, 210, (short) 0, 0, (short) 1, 1);  
patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));

1.2 Excel로 그림 내보내기, 셀에 그림 삽입, 다른 그림 불러오는 방법
    //   PNG   Excel
    String fileName = strAppRootPath + "images/" + "bxlogo.png";

    InputStream is = new FileInputStream(fileName);
    byte[] bytes = IOUtils.toByteArray(is);

    int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);

    CreationHelper helper = workbook.getCreationHelper();
    Drawing drawing = sheet.createDrawingPatriarch();
    ClientAnchor anchor = helper.createClientAnchor();

    //  
    anchor.setCol1(0);
    anchor.setRow1(1);
    //  
    Picture pict = drawing.createPicture(anchor, pictureIdx);
    pict.resize();

그 중에서 인터넷에서 그림을 다운로드하여 실현하는 방식으로 이 글을 참고할 수 있다

네트워크의 그림 자원 가져오기


2, Excel에서 내보내는 Url은 하이퍼링크 용도
앞에서 말한 바와 같이 내보낸 그림이 너무 크면 다른 방법으로 연결된 주소를 내보낼 수 있습니다.하지만 Excel 단원의 연결 방식을 설정해야 합니다.
HSSFCell photoCell=rowIndex.createCell(7+j);
photoCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
photoCell.setCellFormula("HYPERLINK(\"" +wholePhotoUrl+ "\")");
 ,  。 
 ,  。   style 、

HSSFCellStyle linkStyle = workbook.createCellStyle();
HSSFFont cellFont= workbook.createFont();
cellFont.setUnderline((byte) 1);
cellFont.setColor(HSSFColor.BLUE.index);
linkStyle.setFont(cellFont);
// style cell 。
cell.setCellStyle(linkStyle);

참고 글: Apache POI를 Excel에 삽입하는 두 가지 방법

좋은 웹페이지 즐겨찾기