Я использую этот код для рисования гистограммы "one_row_table".
private void addBarChart1(Sheet sheet, int top, int col1, int row1, int col2, int row2, String title) {
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, col1, row1, col2, row2);
Chart chart = drawing.createChart(anchor);
CTChart ctChart = ((XSSFChart) chart).getCTChart();
CTPlotArea ctPlotArea = ctChart.getPlotArea();
CTBarChart ctBarChart = ctPlotArea.addNewBarChart();
ctBarChart.addNewBarDir().setVal(STBarDir.COL);
String lastCol = CellReference.convertNumToColString(sheet.getRow(sheet.getFirstRowNum()).getLastCellNum() - 1);
Integer start = 0;
Integer end = 1;
CTBarSer ctBarSer = ctBarChart.addNewSer();
CTSerTx ctSerTx = ctBarSer.addNewTx();
CTStrRef ctStrRef = ctSerTx.addNewStrRef();
ctStrRef.setF("'" + sheet.getSheetName() + "'!$A$" + ( 2));
ctBarSer.addNewIdx().setVal(0);// id must be below 255
CTAxDataSource cttAxDataSource = ctBarSer.addNewCat();
ctStrRef = cttAxDataSource.addNewStrRef();
ctStrRef.setF("'" + sheet.getSheetName() + "'!$B$1:$" + lastCol + "$1");
CTNumDataSource ctNumDataSource = ctBarSer.addNewVal();
CTNumRef ctNumRef = ctNumDataSource.addNewNumRef();
ctNumRef.setF("'" + sheet.getSheetName() + "'!$B$" + (2) + ":$" +
lastCol + "$" + (2));
// at least the border lines in Libreoffice Calc ;-)
ctBarSer.addNewSpPr().addNewLn().addNewSolidFill().addNewSrgbClr().setVal(new byte[] { 0, 0, 0 });
}
// telling the BarChart that it has axes and giving them Ids
ctBarChart.addNewAxId().setVal(123456);
ctBarChart.addNewAxId().setVal(123457);
// cat axis
CTCatAx ctCatAx = ctPlotArea.addNewCatAx();
ctCatAx.addNewAxId().setVal(123456); // id of the cat axis
CTScaling 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
CTValAx ctValAx = ctPlotArea.addNewValAx();
ctValAx.addNewAxId().setVal(123457); // id of the val axis
ctScaling = ctValAx.addNewScaling();
ctScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);
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
CTLegend ctLegend = ctChart.addNewLegend();
ctLegend.addNewLegendPos().setVal(STLegendPos.B);
ctLegend.addNewOverlay().setVal(false);
// title
CTTitle ctTitle = ctChart.addNewTitle();
ctTitle.addNewOverlay().setVal(false);
ctTitle.addNewTx().addNewRich().addNewBodyPr();
ctTitle.getTx().getRich().addNewP().addNewR().setT(title);
}
Моему руководителю не нравится, что каждая полоса имеет разные цвета, потому что они представляют данные одного и того же типа, но в разных местах.
Я хочу сделать все это одним и тем же цветом, но функция сама выбрала цвет, есть ли способ сделать все полосы голубыми ???