Ich versuche, ein Balkendiagramm in Excel-Datei mit Apache poi und dem folgenden Code zu erstellen: Create Bar Chart in Excel with Apache POI.Verwenden Sie Werte außerhalb Excel-Zelle in Apache Poi Balkendiagramm
In meinem Fall muss ich Datenwerte aus einer anderen Quelle anstelle der Excel-Zellen verwenden. Wie kann ich diese Werte im BarChart verwenden?
Angenommen, dass die Werte als ein Array von Float/Double-Werten kommen. Außerdem muss ich in der Lage sein, die Balkenfarben unabhängig einzustellen. Zum Beispiel sind einige Balken grün, während einige andere rot sind.
ich den Datenteil von Create Bar Chart in Excel with Apache POI Code in folgenden Weise geändert:
CTBarSer ctBarSer = ctBarChart.addNewSer();
CTSerTx ctSerTx = ctBarSer.addNewTx();
CTStrRef ctStrRef = ctSerTx.addNewStrRef();
ctStrRef.setF("hardcoded" + r);
ctBarSer.addNewIdx().setVal(r-2);
CTAxDataSource cttAxDataSource = ctBarSer.addNewCat();
CTStrData ctStrData = cttAxDataSource.addNewStrLit();
ctStrData.addNewPt().setV("Val1");
ctStrData.addNewPt().setV("Val2");
ctStrData.addNewPt().setV("Val3");
CTNumDataSource ctNumDataSource = ctBarSer.addNewVal();
CTNumData ctNumData = ctNumDataSource.addNewNumLit();
CTNumVal ctNumVal = ctNumData.addNewPt();
ctNumVal.setV(String.valueOf(0.92));
ctNumData = ctNumDataSource.addNewNumLit();
ctNumVal = ctNumData.addNewPt();
ctNumVal.setV(String.valueOf(0.95));
ctNumData = ctNumDataSource.addNewNumLit();
ctNumVal = ctNumData.addNewPt();
ctNumVal.setV(String.valueOf(0.98));
Jede Hilfe wird sehr geschätzt. Vielen Dank!
Wenn ich Ausgabe der Excel-Datei drucken, gibt es folgendes Ergebnis:
<xml-fragment xmlns:char="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:main="http://schemas.openxmlformats.org/drawingml/2006/main">
<char:plotArea>
<char:layout/>
<char:barChart>
<char:barDir val="col"/>
<char:varyColors val="false"/>
<char:ser>
<char:idx val="0"/>
<char:tx>
<char:strRef>
<char:f>hardcoded2</char:f>
</char:strRef>
</char:tx>
<char:spPr>
<main:ln>
<main:solidFill>
<main:srgbClr val="000000"/>
</main:solidFill>
</main:ln>
</char:spPr>
<char:cat>
<char:strLit>
<char:pt>
<char:v>Val1</char:v>
</char:pt>
<char:pt>
<char:v>Val2</char:v>
</char:pt>
<char:pt>
<char:v>Val3</char:v>
</char:pt>
</char:strLit>
</char:cat>
<char:val>
<char:numLit>
<char:pt>
<char:v>0.92</char:v>
</char:pt>
</char:numLit>
<char:numLit>
<char:pt>
<char:v>0.95</char:v>
</char:pt>
</char:numLit>
<char:numLit>
<char:pt>
<char:v>0.98</char:v>
</char:pt>
</char:numLit>
</char:val>
</char:ser>
<char:axId val="123456"/>
<char:axId val="123457"/>
</char:barChart>
<char:catAx>
<char:axId val="123456"/>
<char:scaling>
<char:orientation val="minMax"/>
</char:scaling>
<char:delete val="false"/>
<char:axPos val="b"/>
<char:tickLblPos val="nextTo"/>
<char:crossAx val="123457"/>
</char:catAx>
<char:valAx>
<char:axId val="123457"/>
<char:scaling>
<char:orientation val="minMax"/>
</char:scaling>
<char:delete val="false"/>
<char:axPos val="l"/>
<char:tickLblPos val="nextTo"/>
<char:crossAx val="123456"/>
</char:valAx>
</char:plotArea>
<char:plotVisOnly val="true"/>
</xml-fragment>