You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ab...@apache.org on 2018/10/05 18:07:55 UTC
svn commit: r1842959 - in /poi/trunk/src:
examples/src/org/apache/poi/xssf/usermodel/examples/
examples/src/org/apache/poi/xwpf/usermodel/examples/
ooxml/java/org/apache/poi/xddf/usermodel/chart/
ooxml/java/org/apache/poi/xssf/usermodel/
Author: abearez
Date: Fri Oct 5 18:07:55 2018
New Revision: 1842959
URL: http://svn.apache.org/viewvc?rev=1842959&view=rev
Log:
adding tricks from other answers on StackOverflow
Modified:
poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarAndLineChart.java
poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java
poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFTitle.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java
Modified: poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarAndLineChart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarAndLineChart.java?rev=1842959&r1=1842958&r2=1842959&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarAndLineChart.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarAndLineChart.java Fri Oct 5 18:07:55 2018
@@ -22,6 +22,7 @@ package org.apache.poi.xssf.usermodel.ex
import java.io.FileOutputStream;
import java.util.Random;
+import org.apache.poi.common.usermodel.fonts.FontGroup;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xddf.usermodel.PresetColor;
@@ -33,6 +34,7 @@ import org.apache.poi.xddf.usermodel.cha
import org.apache.poi.xddf.usermodel.chart.AxisPosition;
import org.apache.poi.xddf.usermodel.chart.BarDirection;
import org.apache.poi.xddf.usermodel.chart.ChartTypes;
+import org.apache.poi.xddf.usermodel.chart.LayoutMode;
import org.apache.poi.xddf.usermodel.chart.LegendPosition;
import org.apache.poi.xddf.usermodel.chart.XDDFBarChartData;
import org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis;
@@ -41,8 +43,13 @@ import org.apache.poi.xddf.usermodel.cha
import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend;
import org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory;
import org.apache.poi.xddf.usermodel.chart.XDDFLineChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFManualLayout;
import org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource;
import org.apache.poi.xddf.usermodel.chart.XDDFValueAxis;
+import org.apache.poi.xddf.usermodel.text.UnderlineType;
+import org.apache.poi.xddf.usermodel.text.XDDFFont;
+import org.apache.poi.xddf.usermodel.text.XDDFRunProperties;
+import org.apache.poi.xddf.usermodel.text.XDDFTextParagraph;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
@@ -51,6 +58,10 @@ import org.apache.poi.xssf.usermodel.XSS
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+// original contributions by Axel Richter on https://stackoverflow.com/questions/47065690
+// additional title formatting from https://stackoverflow.com/questions/50418856
+// and legend positioning from https://stackoverflow.com/questions/49615379
+// this would probably be an answer for https://stackoverflow.com/questions/36447925 too
public class BarAndLineChart {
private static final int NUM_OF_ROWS = 7;
private static final Random RNG = new Random();
@@ -79,6 +90,21 @@ public class BarAndLineChart {
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 4, 0, 11, 15);
XSSFChart chart = drawing.createChart(anchor);
+ chart.setTitleText("This is my title");
+ chart.setTitleOverlay(true);
+ XDDFRunProperties properties = new XDDFRunProperties();
+ properties.setBold(true);
+ properties.setItalic(true);
+ properties.setUnderline(UnderlineType.DOT_DOT_DASH_HEAVY);
+ properties.setFontSize(22.5);
+ XDDFFont[] fonts = new XDDFFont[]{
+ new XDDFFont(FontGroup.LATIN, "Calibri", null, null, null),
+ new XDDFFont(FontGroup.COMPLEX_SCRIPT, "Liberation Sans", null, null, null)
+ };
+ properties.setFonts(fonts);
+ properties.setLineProperties(solidLine(PresetColor.SIENNA));
+ XDDFTextParagraph paragraph = chart.getTitle().getBody().getParagraph(0);
+ paragraph.setDefaultRunProperties(properties);
// the data sources
XDDFCategoryDataSource xs = XDDFDataSourcesFactory.fromStringCellRange(sheet,
@@ -129,8 +155,13 @@ public class BarAndLineChart {
// legend
XDDFChartLegend legend = chart.getOrAddLegend();
- legend.setPosition(LegendPosition.BOTTOM);
+ legend.setPosition(LegendPosition.LEFT);
legend.setOverlay(false);
+ XDDFManualLayout layout = legend.getOrAddManualLayout();
+ layout.setXMode(LayoutMode.EDGE);
+ layout.setYMode(LayoutMode.EDGE);
+ layout.setX(0.00); //left edge of the chart
+ layout.setY(0.25); //25% of chart's height from top edge of the chart
try (FileOutputStream fileOut = new FileOutputStream("BarAndLineChart.xlsx")) {
wb.write(fileOut);
@@ -150,9 +181,7 @@ public class BarAndLineChart {
}
private static void solidLineSeries(XDDFChartData data, int index, PresetColor color) {
- XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color));
- XDDFLineProperties line = new XDDFLineProperties();
- line.setFillProperties(fill);
+ XDDFLineProperties line = solidLine(color);
XDDFChartData.Series series = data.getSeries().get(index);
XDDFShapeProperties properties = series.getShapeProperties();
if (properties == null) {
@@ -161,4 +190,11 @@ public class BarAndLineChart {
properties.setLineProperties(line);
series.setShapeProperties(properties);
}
+
+ private static XDDFLineProperties solidLine(PresetColor color) {
+ XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color));
+ XDDFLineProperties line = new XDDFLineProperties();
+ line.setFillProperties(fill);
+ return line;
+ }
}
Modified: poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java?rev=1842959&r1=1842958&r2=1842959&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java Fri Oct 5 18:07:55 2018
@@ -71,6 +71,8 @@ public class BarChart {
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
XSSFChart chart = drawing.createChart(anchor);
+ chart.setTitleText("x = 2x and x = 3x");
+ chart.setTitleOverlay(false);
XDDFChartLegend legend = chart.getOrAddLegend();
legend.setPosition(LegendPosition.TOP_RIGHT);
Modified: poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java?rev=1842959&r1=1842958&r2=1842959&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java Fri Oct 5 18:07:55 2018
@@ -118,7 +118,7 @@ public class BarChartExample {
chart.plot(bar);
chart.setTitleText(chartTitle); // https://stackoverflow.com/questions/30532612
- // chart.setTitleOverlay(overlay);
+ chart.setTitleOverlay(false);
}
private static void setColumnData(XWPFChart chart, String chartTitle) {
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java?rev=1842959&r1=1842958&r2=1842959&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java Fri Oct 5 18:07:55 2018
@@ -255,6 +255,10 @@ public abstract class XDDFChart extends
}
/**
+ * Sets the title text as a static string.
+ *
+ * @param text
+ * to use as new title
* @since 4.0.1
*/
public void setTitleText(String text) {
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFTitle.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFTitle.java?rev=1842959&r1=1842958&r2=1842959&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFTitle.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFTitle.java Fri Oct 5 18:07:55 2018
@@ -39,20 +39,17 @@ public class XDDFTitle {
}
public XDDFTextBody getBody() {
- XDDFTextBody body;
- if (title.isSetTxPr()) {
- body = new XDDFTextBody(parent, title.getTxPr());
- } else {
- if (!title.isSetTx()) {
- title.addNewTx();
- }
- CTTx tx = title.getTx();
- if (!tx.isSetRich()) {
- tx.addNewRich();
- }
- body = new XDDFTextBody(parent, tx.getRich());
+ if (!title.isSetTx()) {
+ title.addNewTx();
}
- return body;
+ CTTx tx = title.getTx();
+ if (tx.isSetStrRef()) {
+ tx.unsetStrRef();
+ }
+ if (!tx.isSetRich()) {
+ tx.addNewRich();
+ }
+ return new XDDFTextBody(parent, tx.getRich());
}
public void setText(String text) {
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java?rev=1842959&r1=1842958&r2=1842959&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java Fri Oct 5 18:07:55 2018
@@ -55,10 +55,6 @@ import org.openxmlformats.schemas.drawin
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTitle;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTValAx;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTTextField;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
@@ -295,60 +291,6 @@ public final class XSSFChart extends XDD
}
/**
- * Sets the title text as a static string.
- *
- * @param newTitle
- * to use
- */
- @Override
- public void setTitleText(String newTitle) {
- CTTitle ctTitle;
- if (chart.isSetTitle()) {
- ctTitle = chart.getTitle();
- } else {
- ctTitle = chart.addNewTitle();
- }
-
- CTTx tx;
- if (ctTitle.isSetTx()) {
- tx = ctTitle.getTx();
- } else {
- tx = ctTitle.addNewTx();
- }
-
- if (tx.isSetStrRef()) {
- tx.unsetStrRef();
- }
-
- CTTextBody rich;
- if (tx.isSetRich()) {
- rich = tx.getRich();
- } else {
- rich = tx.addNewRich();
- rich.addNewBodyPr(); // body properties must exist (but can be
- // empty)
- }
-
- CTTextParagraph para;
- if (rich.sizeOfPArray() > 0) {
- para = rich.getPArray(0);
- } else {
- para = rich.addNewP();
- }
-
- if (para.sizeOfRArray() > 0) {
- CTRegularTextRun run = para.getRArray(0);
- run.setT(newTitle);
- } else if (para.sizeOfFldArray() > 0) {
- CTTextField fld = para.getFldArray(0);
- fld.setT(newTitle);
- } else {
- CTRegularTextRun run = para.addNewR();
- run.setT(newTitle);
- }
- }
-
- /**
* Get the chart title formula expression if there is one
*
* @return formula expression or null
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org