티스토리 뷰



예전에 Apache Poi를 활용해서 엑셀에 이미지를 출력할 때, 적용 했던 방법은 직접 column과 row크기를 바꾸고, 이미지 크기를 하드코딩에서 맞추어서 넣는 형식이었습니다.


하지만, apache poi 예제를 잘 살펴보시면 제공하는 java 파일중에


https://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java


요게 있는데요.


요걸 잘 활용해서, 사이즈를 입력하면 Cell의 크기와 이미지 크기에 맞게 조정을 해줍니다.


옵션은 4개가 있네요.


 옵션

설명 

 EXPAND_ROW

 이미지 높이에 맞게 Cell의 Row(Height) 높이를 변경

 EXPAND_COLUMN

 이미지 너비에 맞게 Cell의 Column(Width) 너비를 변경

 EXPAND_ROW_AND_COLUMN

 이미지 높이와 너비에 맞게 Cell 크기를 변경

 OVERLAY_ROW_AND_COLUMN

 Cell크기 변경 없이 이미지 크기 대로 덮어서 보이도록 설정


해당 자바 파일을 Import 해주고요~


Spring 에서 Excel 파일 출력하는 예제는 많이 있습니다.

AbstractView 또는 AbstractExcelView 등을 상속받아서 오버라이드 되는 메소드를 구현하면 됩니다.


1
2
3
4
5
new AddDimensionedImage().addImageToSheet(
              colNumber, rowNumber,
              sheet,   sheet.createDrawingPatriarch(),
              imageURL, width, height,
              AddDimensionedImage.EXPAND_ROW_AND_COLUMN);
cs


원하는 엑셀에서의 Col과 Row 번호를 입력하고, 물론 다 숫자겟죠

엑셀에서 A1 = 0, 0 이런식으로 생각하시면 됩니다.


링크의 소스에서 엑셀에 이미지를 추가하는 method 를 보면 실제로는 이미지 URL을 전달해서 실제 파일을 읽어들여서 처리하게끔 되어 있는데요.


저는 필요에 따라 오버로딩 해서 byte[]형태의 이미지를 파라미터로 받게 변경을 했고, 이를 jpeg 고정 타입으로 이미지가 추가되도록 했습니다.


이미지 MimeType 필요하면, 필요에 따라 형태를 변경해서 사용하면 될 것 같네요.



댓글