Programming/Java
[Excel POI] Jqplot으로 그린 Chart - Excel 출력
콩이볼
2019. 3. 29. 14:23
//jsp에서 그려진 Jqplot Chart의 주소를 추출한다.
// 추출한 url을 Excel 요청 시 함께 보낸다.
html2canvas($("#chart"), {
onrendered: function(canvas) {
url = canvas.toDataURL();
}
});
//Excel 추출 부분
//받은 URL을 image로 변환하여 Excel에 삽입한다.
public void printImage(String url, Workbook workbook, XSSFSheet sheet, int col, int row
, double size, double size2) throws IOException {
XSSFRow xrow = null;
XSSFCell xcell = null;
int cellIdx = col;
if (col == 0) {
xrow = sheet.createRow(row-1);
} else {
xrow = sheet.getRow(row-1);
}
String data = url.split(",")[1];
byte[] imageBytes = DatatypeConverter.parseBase64Binary(data);
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
try {
BufferedImage bufImg = ImageIO.read(new ByteArrayInputStream(imageBytes));
ImageIO.write(bufImg, "png", byteArrayOut);
} catch (IOException e) {
e.printStackTrace();
}
try {
// 이미지 파일 로드
int indx = workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG);
XSSFCreationHelper helper = (XSSFCreationHelper) workbook.getCreationHelper();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = helper.createClientAnchor();
// 이미지를 출력할 CELL 위치 선정
anchor.setCol1(col);
anchor.setRow1(row);
// 이미지 그리기
XSSFPicture pict = drawing.createPicture(anchor, indx);
// 이미지 사이즈 비율 설정
pict.resize(size, size2);
} catch (Exception e) {
}
}