2016-12-22 5 views
1

apache poi 라이브러리를 사용하여 "스택 막대 차트"를 만들고 싶습니다. 문서가 필요합니다.Apache POI 스택 Barchart를 만드는 방법

 row1 = worksheet.createRow(r); 
     row['data'].flatten.each_with_index do |data, index| 
     cell = row1.createCell(index); 
     cell.setCellValue(data); 
     end 
    drawing = worksheet.createDrawingPatriarch(); 
    anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 8, 20); 

    chart = drawing.createChart(anchor); 
    ctChart = chart.getCTChart(); 
    ctPlotArea = ctChart.getPlotArea(); 
    ctBarChart = ctPlotArea.addNewBarChart(); 

    ctBoolean = ctBarChart.addNewVaryColors(); 
    ctBoolean.setVal(true); 
    ctBarChart.addNewBarDir().setVal(STBarDir.BAR); 
    ctBarChart.addNewGrouping().setVal(STBarGrouping.STACKED); 

     ctBarSer = ctBarChart.addNewSer(); 
     ctSerTx = ctBarSer.addNewTx(); 
     ctStrRef = ctSerTx.addNewStrRef(); 
     ctStrRef.setF("Sheet1!$A$#{r+1}"); 
     ctBarSer.addNewIdx().setVal(r+1); 
     cttAxDataSource = ctBarSer.addNewCat(); 
     ctStrRef = cttAxDataSource.addNewStrRef(); 
     length = row['data'].flatten.length 
     ctStrRef.setF("Sheet1!$B$#{r+1}:$#{CellReference.convertNumToColString(length-1)}$#{r + 1}"); 
     ctNumDataSource = ctBarSer.addNewVal(); 
     ctNumRef = ctNumDataSource.addNewNumRef(); 
     ctNumRef.setF("Sheet1!$B$#{r+1}:$#{CellReference.convertNumToColString(length-1)}$#{r+1}"); 

     ctBarSer.addNewSpPr().addNewLn().addNewSolidFill().addNewSrgbClr().setVal([0,0,0]); 

위의 코드를 사용하여 막 대형 차트를 얻었으나 누적 막 대형 차트로 변환해야합니다. 내가 정확히 마법 주문이 차트 작업이하려면 무엇을 말할 수는 없지만

enter image description here

+2

"문서가 필요합니다."라는 질문은 귀하의 질문과 관련이 있습니다. 즉, 한 줄짜리는 귀하가 시도한 것을 말하지 않습니다. 어쩌면 [템플릿 접근] (http://www.programming-free.com/2012/12/create-charts-in-excel-using-java.html)이 당신을 위해 일합니다 .... – kiwiwings

+0

나는 만들 수있다. apache poi를 사용하는 막 대형 차트. 하지만 내 요구 사항은 바 차트를 스택 막대 차트로 변환하도록 변경되었습니다. – user1534350

답변

2

, 나는 당신이 당신의 문제를 통해 작동 할 수 있습니다.

작성할 차트 유형이 POI에서 지원되지 않는 경우. 수동으로 만들어야합니다. 너는 그 일에 좋은 출발을 보였다. 사양 문서는 여기 http://www.ecma-international.org/publications/standards/Ecma-376.htm에서 찾을 수 있습니다. POI는 제 1 판을 사용합니다.

이러한 문서는 매우 유용하지만 XML을 구성하는 방법을 결정하는 데 도움이 필요할 수 있습니다. Excel 또는 Word를 사용하여 간단한 문서를 만든 다음 저장된 문서의 이름을 *.zip으로 바꿉니다. 이제 메모장 ++ 또는 다른 뷰어를 사용하여 xml 패키지를 검사 할 수 있습니다.

POI로 생성 된 항목이 있으면 예상 결과와 다른 경우 차이점을 확인할 수있는 유사한 방식으로 결과 XML을 볼 수 있습니다.