如何在poi apache中包含y轴标签

问题描述 投票:0回答:1

我使用apache poi在excel文件中创建了堆积条形图。如何在不增加宽度的情况下包装y轴标签。有人能帮忙吗?

   var filename = new Date();
      filename.toString();
      var f1 = filename.toString.replaceAll(":", "")
      var file = new File(Play.application().configuration().getString("bdc.documents.location") + "/exportedDocuments/" + f1 + ".xlsx");
      file.getParentFile().mkdirs();
      val fileOut = new FileOutputStream(file)
      val wb = new XSSFWorkbook()
      val sheet = wb.createSheet("Sheet1");
      var row = sheet.createRow(0);
      row.createCell(0).setCellValue("Requirement Name")
      row.createCell(1).setCellValue("Initial Stage")
      row.createCell(2).setCellValue("Appliaction stage")
      row.createCell(3).setCellValue("Integration Stage")
      row.createCell(4).setCellValue("Infrastructure Stage")
      row.createCell(5).setCellValue("Development Division Head")
      row.createCell(6).setCellValue("Buisness Partner Approval")
      row.createCell(7).setCellValue("Resource Allocation")
      var cnt = 0
      var requirementMap = new java.util.HashMap[String, String]();
      var initialMap = new java.util.HashMap[String, String]();
      var applicationMap = new java.util.HashMap[String, String]();
      var integrationMap = new java.util.HashMap[String, String]();
      var infrastructureMap = new java.util.HashMap[String, String]();
      var developmentMap = new java.util.HashMap[String, String]();
      var pendingMap = new java.util.HashMap[String, String]();
      var resourceMap = new java.util.HashMap[String, String]();
      if(!estimationDelays.isEmpty){
        for(e <- estimationDelays){
          cnt = cnt + 1
          var row = sheet.createRow(cnt);
          var name = e.requirement_name
          var initial = e.initial_delayed_days.get.toString() + " "
          var application = e.application_delayed_days.get.toString() + " "
          var integration = e.integration_delayed_days.get.toString() + " "
          var infrastucture = e.infrastructure_delayed_days.get.toString() + " "
          var development = e.development_delayed_days.get.toString() + " "
          var pending = e.pending_delayed_days.get.toString() + " "
          var resource = e.resource_dalayed_days.get.toString() + " "
          row.createCell(0).setCellValue(name)
          row.createCell(1).setCellValue(initial)
          row.createCell(2).setCellValue(application)
          row.createCell(3).setCellValue(integration)
          row.createCell(4).setCellValue(infrastucture)
          row.createCell(5).setCellValue(development)
          row.createCell(6).setCellValue(pending)
          row.createCell(7).setCellValue(resource)
        }
      }
       cnt = 0
      if(!estimationDelays.isEmpty){
        for(e <- estimationDelays.reverse){
          cnt = cnt + 1
          requirementMap.put(cnt.toString, e.requirement_name)
          initialMap.put(cnt.toString, e.initial_delayed_days.get.toString())
          applicationMap.put(cnt.toString, e.application_delayed_days.get.toString())
          integrationMap.put(cnt.toString, e.integration_delayed_days.get.toString())
          infrastructureMap.put(cnt.toString, e.infrastructure_delayed_days.get.toString())
          developmentMap.put(cnt.toString, e.development_delayed_days.get.toString())
          pendingMap.put(cnt.toString, e.pending_delayed_days.get.toString())
          resourceMap.put(cnt.toString, e.resource_dalayed_days.get.toString())
        }
      }

      var estimationMap = new java.util.HashMap[String, String]();         
      estimationMap.put("1", "Initial Stage")
      estimationMap.put("2", "Appliaction stage")
      estimationMap.put("3", "Integration Stage")
      estimationMap.put("4", "Infrastructure Stage")
      estimationMap.put("5", "Development Division Head")
      estimationMap.put("6", "Buisness Partner Approval")
      estimationMap.put("7", "Resource Allocation") 

      var size = estimationDelays.size
      var a = size + 3
      var b = 18
      var c = a * 4
      var a1 = 0
      var b1 = 0
      var c1 = 0

      var drawing = sheet.createDrawingPatriarch();
      var anchor = drawing.createAnchor(0, 0, 5, 0, 0, a, b, c)
      var chart = drawing.createChart(anchor)

      var ctChart = chart.getCTChart
      var ctPlotArea = ctChart.getPlotArea();
      var ctBarChart = ctPlotArea.addNewBarChart();

      var anchor1 = drawing.createAnchor(0, 0, 0, 0, 0, a1, b1, c1)
      var shape = drawing.createSimpleShape(anchor1)
      shape.setShapeType(ShapeTypes.LINE);
      shape.setLineWidth(1.5);
      shape.setLineStyle(3);
      shape.setLineStyleColor(0, 0, 255);

      var ctBoolean1 = ctBarChart.addNewVaryColors();
      ctBoolean1.setVal(false)
      ctBarChart.addNewBarDir().setVal(STBarDir.BAR);
      ctBarChart.addNewGrouping().setVal(STBarGrouping.STACKED);

      var data = 100.toByte
      ctBarChart.addNewOverlap().setVal(data)

      var dLbls = ctBarChart.addNewDLbls();
      dLbls.addNewShowBubbleSize().setVal(false);
      dLbls.addNewShowLegendKey().setVal(false);
      dLbls.addNewShowCatName().setVal(false);
      dLbls.addNewShowSerName().setVal(false);
      dLbls.addNewShowPercent().setVal(false);
      dLbls.addNewShowVal().setVal(true);

    val buisness: Array[Byte] = Array(96,189.toByte,104)
    val application: Array[Byte] = Array(93,165.toByte,218.toByte)
    val integration: Array[Byte] = Array(178.toByte,145.toByte,47)
    val infrastructure: Array[Byte] = Array(205.toByte,162.toByte,252.toByte)
    val development: Array[Byte] = Array(173.toByte,191.toByte,10)
    val resource: Array[Byte] = Array(25,101,169.toByte)

     for (r <- 1 to 7) {
         var cTBarSer = ctBarChart.addNewSer();
         var cTStrRef = cTBarSer.addNewTx().addNewStrRef();
         cTStrRef.setF("Label " + r);
         cTStrRef.addNewStrCache().addNewPtCount().setVal(1);
         var cTStrVal = cTStrRef.getStrCache().addNewPt();
         cTStrVal.setIdx(0);
         cTStrVal.setV(estimationMap.get(r.toString));

         cTBarSer.addNewIdx().setVal(r-1);  
         cTStrRef = cTBarSer.addNewCat().addNewStrRef();
         cTStrRef.setF("Categories");
         cTStrRef.addNewStrCache().addNewPtCount().setVal(3);
         for (c <- 1 to size + 1) {
          cTStrVal = cTStrRef.getStrCache().addNewPt();
          cTStrVal.setIdx(c-1);
          cTStrVal.setV(requirementMap.get(c.toString));
         }

         var cTNumRef = cTBarSer.addNewVal().addNewNumRef();
         cTNumRef.setF("" + r);
         cTNumRef.addNewNumCache().addNewPtCount().setVal(3);
         for (c <- 1 to size + 1) {
          var cTNumVal = cTNumRef.getNumCache().addNewPt();
          cTNumVal.setIdx(c-1);
          if (r == 1) {         
            cTNumVal.setV(initialMap.get(c.toString))     
            var ctShapeProperties = cTBarSer.addNewSpPr();
            ctShapeProperties.addNewSolidFill().addNewSrgbClr().setVal(buisness);
          } else {
            if (r == 2) {                 
              cTNumVal.setV(applicationMap.get(c.toString))
              var ctShapeProperties = cTBarSer.addNewSpPr();
              ctShapeProperties.addNewSolidFill().addNewSrgbClr().setVal(application);
            } else {
              if (r == 3) {                    
                cTNumVal.setV(integrationMap.get(c.toString))
                var ctShapeProperties = cTBarSer.addNewSpPr();
                ctShapeProperties.addNewSolidFill().addNewSrgbClr().setVal(integration);
              } else {
                if (r == 4) {                      
                  cTNumVal.setV(infrastructureMap.get(c.toString))
                  var ctShapeProperties = cTBarSer.addNewSpPr();
                  ctShapeProperties.addNewSolidFill().addNewSrgbClr().setVal(infrastructure);
                } else {
                  if (r == 5) {                       
                    cTNumVal.setV(developmentMap.get(c.toString))
                    var ctShapeProperties = cTBarSer.addNewSpPr();
                    ctShapeProperties.addNewSolidFill().addNewSrgbClr().setVal(development);
                  } else {
                    if (r == 6) {                          
                      cTNumVal.setV(pendingMap.get(c.toString))
                      var ctShapeProperties = cTBarSer.addNewSpPr();
                      ctShapeProperties.addNewSolidFill().addNewSrgbClr().setVal(buisness);
                    } else {
                      if (r == 7) {                            
                        cTNumVal.setV(resourceMap.get(c.toString))
                        var ctShapeProperties = cTBarSer.addNewSpPr();
                        ctShapeProperties.addNewSolidFill().addNewSrgbClr().setVal(resource);
                      } else {

                      }
                    }
                  }
                }
              }
            }
          }
         }
     }

    ctBarChart.addNewAxId().setVal(123456);
    ctBarChart.addNewAxId().setVal(123457);

    //cat axis
    var ctCatAx = ctPlotArea.addNewCatAx();
    ctCatAx.addNewAxId().setVal(123456); //id of the cat axis
    var ctScaling = ctCatAx.addNewScaling();
    ctScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);
    ctCatAx.addNewDelete().setVal(false);
    ctCatAx.addNewAxPos().setVal(STAxPos.B);
    ctCatAx.addNewCrossAx().setVal(123457); //id of the val axis
    ctCatAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);

    //val axis
    val ctValAx = ctPlotArea.addNewValAx();
    ctValAx.addNewAxId().setVal(123457); //id of the val axis
    ctScaling = ctValAx.addNewScaling();
    ctScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);
    ctScaling.addNewMin().setVal(0)
    ctScaling.addNewMax().setVal(550)
    ctValAx.addNewDelete().setVal(false);
    ctValAx.addNewAxPos().setVal(STAxPos.L);
    ctValAx.addNewCrossAx().setVal(123456); //id of the cat axis          
    ctValAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);


    //legend
    val ctLegend = ctChart.addNewLegend();
    ctLegend.addNewLegendPos().setVal(STLegendPos.T);
    ctLegend.addNewOverlay().setVal(false);

      wb.write(fileOut)

我使用apache poi在excel文件中创建了堆积条形图。如何在不增加宽度的情况下包装y轴标签。任何人都可以帮忙吗?有人可以帮忙吗? stacked bar chart

excel scala apache-poi bar-chart spreadsheet
1个回答
1
投票

woking ...在标签名称中添加“\ n”

© www.soinside.com 2019 - 2024. All rights reserved.