개발 & 데이터베이스/JAVA

[JAVA] apache poi로 엑셀 생성하기 #3 이미지 생성하기

K.두부 2021. 12. 14. 23:53
반응형

apache poi를 이용하면 엑셀에서도 많은 기능을 사용할 수 있습니다. 그 중에서도 이번에 사용해 볼 기능은 이미지 생성입니다. 이미지를 생성하기 위해서는 XSSFClientAnchor과 XSSFPicture를 사용해야합니다. 

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Main {
public static void main(String[] args) throws IOException {
XSSFWorkbook workBook = new XSSFWorkbook();
CellStyle defaultStyle = workBook.createCellStyle();
// 시트 생성 및 셀 높이 설정
XSSFSheet sheet = workBook.createSheet();
Row row = sheet.createRow(0);
String filepath = "C:/EXCEL_TEMP/test.jpg";
InputStream is = new FileInputStream(filepath);
byte[] bytes = IOUtils.toByteArray(is);
int pictureindex = workBook.addPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);
XSSFClientAnchor anchor = new XSSFClientAnchor();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
anchor.setCol1(0);
anchor.setRow1(0);
// 이미지 그리기
XSSFPicture pic = drawing.createPicture(anchor, pictureindex);
pic.resize();
try {
File xlsFile = new File("C:/EXCEL_TEMP/test.xls");
FileOutputStream fileOut = new FileOutputStream(xlsFile);
workBook.write(fileOut);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
workBook.close();
is.close();
}
}
}

 

반응형