jfreechart (JSP + 스트럿츠에서 사용 가능)를 엑셀 시트로 내보내는 옵션을 찾고 있습니다.Jfreechart 이미지를 Excel로 내보내기
'msexcel을 입력하여 응답 헤더를 설정하여 전체 JSP를 내보내고'시도했지만 jfreechart 이미지를 렌더링하지 않았습니다.
jfreechart를 내보내려면 다른 옵션이 있습니까?
jfreechart (JSP + 스트럿츠에서 사용 가능)를 엑셀 시트로 내보내는 옵션을 찾고 있습니다.Jfreechart 이미지를 Excel로 내보내기
'msexcel을 입력하여 응답 헤더를 설정하여 전체 JSP를 내보내고'시도했지만 jfreechart 이미지를 렌더링하지 않았습니다.
jfreechart를 내보내려면 다른 옵션이 있습니까?
jfreechart를 사용하여 차트를 생성하고이를 수출하기 위해 POI를 사용했습니다.
ServletOutputStream stream=resp.getOutputStream();
resp.setContentType("application/vnd.ms-excel");
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
int imageWidth= 700;
int imageHeigth = 400;
JFreeChart chart=ChartFactory.createBarChart("Test Chart", "", "", dataset, PlotOrientation.VERTICAL, true, true, false);
ChartUtilities.writeChartAsJPEG(outStream, chart, imageWidth, imageHeigth);
byte[] imageInByte = outStream.toByteArray();
outStream.close();
int pictureIdx =wb.addPicture(imageInByte,Workbook.PICTURE_TYPE_JPEG);
Drawing drawing = sheet.createDrawingPatriarch();
CreationHelper helper = wb.getCreationHelper();
//add a picture shape
ClientAnchor anchor = helper.createClientAnchor();
//set top-left corner of the picture,
//subsequent call of Picture#resize() will operate relative to it
anchor.setCol1(3);
anchor.setRow1(4);
Picture pict = drawing.createPicture(anchor, pictureIdx);
//auto-size picture relative to its top-left corner
pict.resize();
wb.write(outStream);
stream.write(outStream.toByteArray());
Apache POI는 한계가 있기 때문에 도움이되지 않습니다 (Apache 웹 사이트의 설명서 참조). 선 및 흩어져있는 차트 만 플로팅 할 수 있습니다. 매우 저조합니다. Excel로 작업하기에 좋은 라이브러리이지만 그래프를 작성하는 데는 적합하지 않습니다. 내 제안은 사전 템플릿으로 준비된 것을 사용하고 그것을 조정하고 필요한 데이터를 Java에서 템플릿으로 전송하는 것입니다. 또 다른 방법은 렌더링 된 JPEG를 사용하는 것이지만, 끔찍한 일이며 그렇게하지 마십시오.