반응형

# Naver Search API 활용 Excel에 image 저장하기

기존에 존재하는 Excel 파일을 읽어 오는게 아닌, 엑셀 파일을 만들고 원하는 위치에 이미지를 넣어 생성하는 방식.준비물 : 엑셀에 삽입할 이미지. (pic.jpg)## 작업소스

import java.io.FileInputStream;
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.Cell;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Picture;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.util.IOUtils;

public class Project03_B {
	public static void main(String[] args) {
		try {
			Workbook wb = new HSSFWorkbook();
			Sheet sheet = wb.createSheet("sample Excel");	// Excel 시트 생성 및 시트명 입력(sample Excel)
			
			InputStream inputStream = new FileInputStream("pic.jpg"); 		// 이미지 파일 읽기.
			byte[] bytes = IOUtils.toByteArray(inputStream);			// 이미지 파일 byte 단위로 읽어서 저장.
			int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);	// 이미지 번지 저장.
			inputStream.close();
			
			CreationHelper helper = wb.getCreationHelper();		// Workbook에 뭔가를 생성할 수 있도록 하는 헬퍼.
			Drawing drawing = sheet.createDrawingPatriarch();	// 시트에 그림을 그릴수 있도록 해줌.
			ClientAnchor anchor = helper.createClientAnchor();	// 위치 잡기용.
			anchor.setCol1(1);	// Column : B
			anchor.setRow1(2);	// Row : 3
			anchor.setCol2(2);	// Column : C
			anchor.setRow2(3);	// Row : 4
			
			Picture pict = drawing.createPicture(anchor, pictureIdx);	// 위치에 이미지 그리기.
			
			// Cell 생성하여 이미지 크기 설정.
			Cell cell = sheet.createRow(2).createCell(1);
			int widthUnits = 20*256;				// Excel 한 칸을 기준, 하나의 픽셀 데이터가 넓이 1/256 수준.
			sheet.setColumnWidth(1,  widthUnits);		
			short heightUnits = 120*20;				// Excel 한 칸을 기준, 하나의 픽셀 데이터가 1/20 수준.
			cell.getRow().setHeight(heightUnits);
			
			
			// Excel 파일 저장.
			FileOutputStream fileOut = new FileOutputStream("myFile.xls");
			wb.write(fileOut);
			fileOut.close();
			
			System.out.println("성공!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

## 결과물

 

반응형

+ Recent posts