2012-08-06 3 views
0

jfreechart (JSP + 스트럿츠에서 사용 가능)를 엑셀 시트로 내보내는 옵션을 찾고 있습니다.Jfreechart 이미지를 Excel로 내보내기

'msexcel을 입력하여 응답 헤더를 설정하여 전체 JSP를 내보내고'시도했지만 jfreechart 이미지를 렌더링하지 않았습니다.

jfreechart를 내보내려면 다른 옵션이 있습니까?

답변

0

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()); 
0

Apache POI는 한계가 있기 때문에 도움이되지 않습니다 (Apache 웹 사이트의 설명서 참조). 선 및 흩어져있는 차트 만 플로팅 할 수 있습니다. 매우 저조합니다. Excel로 작업하기에 좋은 라이브러리이지만 그래프를 작성하는 데는 적합하지 않습니다. 내 제안은 사전 템플릿으로 준비된 것을 사용하고 그것을 조정하고 필요한 데이터를 Java에서 템플릿으로 전송하는 것입니다. 또 다른 방법은 렌더링 된 JPEG를 사용하는 것이지만, 끔찍한 일이며 그렇게하지 마십시오.