반응형
Apache POI 삽입 이미지
엑셀 시트에 사진을 삽입하는 데 어려움을 겪고 있습니다.이 주제에 대해 많은 의문이 있지만, 저는 제가 무엇을 잘못하고 있는지 도저히 이해할 수 없습니다.코드가 실행되고 오류가 표시되지 않지만 삽입된 이미지가 보이지 않습니다.
코드는 다음과 같습니다.
InputStream is = new FileInputStream("nasuto_tlo.png");
byte [] bytes = IOUtils.toByteArray(is);
int pictureIndex = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
is.close();
CreationHelper helper = wb.getCreationHelper();
Drawing drawingPatriarch = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(2);
anchor.setRow1(3);
Picture pict = drawingPatriarch.createPicture(anchor, pictureIndex);
pict.resize();
try {
FileOutputStream out = new FileOutputStream(root+"/Busotina/Busotina1.xls");
wb.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
문제는 당신의 앵커가 정확하지 않다는 것입니다.기본값은 0이지만 첫 번째 열은 두 번째 열보다 클 수 없기 때문에 네 개의 값을 모두 설정해야 합니다. ;) 음의 범위가 됩니다.엑셀 파일을 열면 손상되었다는 경고를 받아야 합니다.
그러니 시도해 보세요
anchor.setCol1(2);
anchor.setCol2(3);
anchor.setRow1(3);
anchor.setRow2(4);
내가 작성한 일부 코드의 작동 예:
// read the image to the stream
final FileInputStream stream =
new FileInputStream( imagePath );
final CreationHelper helper = workbook.getCreationHelper();
final Drawing drawing = sheet.createDrawingPatriarch();
final ClientAnchor anchor = helper.createClientAnchor();
anchor.setAnchorType( ClientAnchor.MOVE_AND_RESIZE );
final int pictureIndex =
workbook.addPicture(IOUtils.toByteArray(stream), Workbook.PICTURE_TYPE_PNG);
anchor.setCol1( 0 );
anchor.setRow1( LOGO_ROW ); // same row is okay
anchor.setRow2( LOGO_ROW );
anchor.setCol2( 1 );
final Picture pict = drawing.createPicture( anchor, pictureIndex );
pict.resize();
언급URL : https://stackoverflow.com/questions/21991473/apache-poi-insert-image
반응형
'programing' 카테고리의 다른 글
레일 4: before_filter vs. before_action (0) | 2023.06.15 |
---|---|
카트에 대한 조건부 추가 요금 (0) | 2023.06.15 |
MySQL 및 MariaDB가 앰퍼샌드를 포함하는 문자열을 데이터베이스에서 볼 수 있을 때 보고하지 않음 (0) | 2023.06.15 |
getchar()를 이해하려고 노력하고 있습니다!= EOF (0) | 2023.06.10 |
HTML 양식을 jQuery를 통해 제출하지 않고 강제로 유효성을 검사하는 방법 (0) | 2023.06.10 |