瀏覽代碼

more XDDF improvements based on SO examples

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1842876 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_4_0_1
Alain Béarez 5 年之前
父節點
當前提交
f446df6f66

+ 2
- 0
src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java 查看文件

@@ -115,6 +115,8 @@ public class BarChartDemo {
series2.setTitle(series[1], chart.setSheetTitle(series[1], 1));

chart.plot(bar);
chart.setTitleText(chartTitle); // https://stackoverflow.com/questions/30532612
// chart.setTitleOverlay(overlay);
}

private static void setColumnData(XSLFChart chart, String chartTitle) {

+ 2
- 0
src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java 查看文件

@@ -76,7 +76,9 @@ public class BarChart {

// Use a category axis for the bottom axis.
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
bottomAxis.setTitle("x"); // https://stackoverflow.com/questions/32010765
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
leftAxis.setTitle("f(x)");
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);

XDDFDataSource<Double> xs = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));

+ 2
- 0
src/examples/src/org/apache/poi/xssf/usermodel/examples/LineChart.java 查看文件

@@ -77,7 +77,9 @@ public class LineChart {

// Use a category axis for the bottom axis.
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
bottomAxis.setTitle("x"); // https://stackoverflow.com/questions/32010765
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
leftAxis.setTitle("f(x)");
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);

XDDFDataSource<Double> xs = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));

+ 2
- 0
src/examples/src/org/apache/poi/xssf/usermodel/examples/ScatterChart.java 查看文件

@@ -77,7 +77,9 @@ public class ScatterChart {
legend.setPosition(LegendPosition.TOP_RIGHT);

XDDFValueAxis bottomAxis = chart.createValueAxis(AxisPosition.BOTTOM);
bottomAxis.setTitle("x"); // https://stackoverflow.com/questions/32010765
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
leftAxis.setTitle("f(x)");
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);

XDDFDataSource<Double> xs = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));

+ 2
- 0
src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java 查看文件

@@ -117,6 +117,8 @@ public class BarChartExample {
series2.setTitle(series[1], chart.setSheetTitle(series[1], 1));

chart.plot(bar);
chart.setTitleText(chartTitle); // https://stackoverflow.com/questions/30532612
// chart.setTitleOverlay(overlay);
}

private static void setColumnData(XWPFChart chart, String chartTitle) {

+ 13
- 0
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java 查看文件

@@ -79,6 +79,19 @@ public class XDDFCategoryAxis extends XDDFChartAxis {
return new XDDFShapeProperties(properties);
}

/**
* @since 4.0.1
*/
@Override
public void setTitle(String text) {
if (!ctCatAx.isSetTitle()) {
ctCatAx.addNewTitle();
}
XDDFTitle title = new XDDFTitle(null, ctCatAx.getTitle());
title.setOverlay(false);
title.setText(text);
}

@Override
public boolean isSetMinorUnit() {
return false;

+ 21
- 14
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java 查看文件

@@ -70,7 +70,6 @@ import org.openxmlformats.schemas.drawingml.x2006.chart.CTScatterChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerAx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSurface;
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.chart.ChartSpaceDocument;
import org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties;
@@ -252,11 +251,27 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
if (!chart.isSetTitle()) {
chart.addNewTitle();
}
CTTitle title = chart.getTitle();
if (title.isSetOverlay()) {
title.getOverlay().setVal(overlay);
new XDDFTitle(this, chart.getTitle()).setOverlay(overlay);
}

/**
* @since 4.0.1
*/
public void setTitleText(String text) {
if (!chart.isSetTitle()) {
chart.addNewTitle();
}
new XDDFTitle(this, chart.getTitle()).setText(text);
}

/**
* @since 4.0.1
*/
public XDDFTitle getTitle() {
if (chart.isSetTitle()) {
return new XDDFTitle(this, chart.getTitle());
} else {
title.addNewOverlay().setVal(overlay);
return null;
}
}

@@ -271,15 +286,7 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
if (!chart.isSetTitle()) {
return null;
}
CTTitle title = chart.getTitle();
if (!title.isSetTx()) {
return null;
}
CTTx tx = title.getTx();
if (!tx.isSetRich()) {
return null;
}
return new XDDFTextBody(this, tx.getRich());
return new XDDFTitle(this, chart.getTitle()).getBody();
}

@Override

+ 5
- 0
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartAxis.java 查看文件

@@ -56,6 +56,11 @@ public abstract class XDDFChartAxis implements HasShapeProperties {

public abstract XDDFShapeProperties getOrAddMinorGridProperties();

/**
* @since 4.0.1
*/
public abstract void setTitle(String text);

/**
* @return true if minor unit value is defined, false otherwise
*/

+ 79
- 0
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFTitle.java 查看文件

@@ -0,0 +1,79 @@
/*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ====================================================================
*/

package org.apache.poi.xddf.usermodel.chart;

import org.apache.poi.util.Beta;
import org.apache.poi.xddf.usermodel.text.TextContainer;
import org.apache.poi.xddf.usermodel.text.XDDFTextBody;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTitle;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTx;

/**
* @since 4.0.1
*/
@Beta
public class XDDFTitle {
private final CTTitle title;
private final TextContainer parent;

public XDDFTitle(TextContainer parent, CTTitle title) {
this.parent = parent;
this.title = title;
}

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());
}
return body;
}

public void setText(String text) {
if (!title.isSetLayout()) {
title.addNewLayout();
}
getBody().setText(text);
}

public void setOverlay(Boolean overlay) {
if (overlay == null) {
if (title.isSetOverlay()) {
title.unsetOverlay();
}
} else {
if (title.isSetOverlay()) {
title.getOverlay().setVal(overlay);
} else {
title.addNewOverlay().setVal(overlay);
}
}
}

}

+ 13
- 0
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFValueAxis.java 查看文件

@@ -78,6 +78,19 @@ public class XDDFValueAxis extends XDDFChartAxis {
return new XDDFShapeProperties(properties);
}

/**
* @since 4.0.1
*/
@Override
public void setTitle(String text) {
if (!ctValAx.isSetTitle()) {
ctValAx.addNewTitle();
}
XDDFTitle title = new XDDFTitle(null, ctValAx.getTitle());
title.setOverlay(false);
title.setText(text);
}

@Override
public boolean isSetMinorUnit() {
return ctValAx.isSetMinorUnit();

+ 10
- 0
src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFParagraphProperties.java 查看文件

@@ -67,6 +67,16 @@ public class XDDFParagraphProperties {
}
}

/**
* @since 4.0.1
*/
public XDDFRunProperties addDefaultRunProperties() {
if (!props.isSetDefRPr()) {
props.addNewDefRPr();
}
return getDefaultRunProperties();
}

public XDDFRunProperties getDefaultRunProperties() {
if (props.isSetDefRPr()) {
return new XDDFRunProperties(props.getDefRPr());

+ 13
- 0
src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextBody.java 查看文件

@@ -70,6 +70,19 @@ public class XDDFTextBody {
return p;
}

public void setText(String text) {
if (_body.sizeOfPArray() > 0) {
// remove all but first paragraph
for (int i = _body.sizeOfPArray() - 1; i > 0; i--) {
_body.removeP(i);
}
getParagraph(0).setText(text);
} else {
// as there were no paragraphs yet, initialize the text body
initialize().setText(text);
}
}

public XDDFTextParagraph addNewParagraph() {
return new XDDFTextParagraph(_body.addNewP(), this);
}

+ 25
- 0
src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java 查看文件

@@ -69,6 +69,24 @@ public class XDDFTextParagraph {
_runs.add(new XDDFTextRun((CTRegularTextRun) xo, this));
}
}

addDefaultRunProperties();
addAfterLastRunProperties();
}

public void setText(String text) {
// remove all runs
for (int i = _p.sizeOfBrArray() - 1; i >= 0; i--) {
_p.removeBr(i);
}
for (int i = _p.sizeOfFldArray() - 1; i >= 0; i--) {
_p.removeFld(i);
}
for (int i = _p.sizeOfRArray() - 1; i >= 0; i--) {
_p.removeR(i);
}
_runs.clear();
appendRegularRun(text);
}

public String getText() {
@@ -662,6 +680,13 @@ public class XDDFTextParagraph {
}
}

/**
* @since 4.0.1
*/
public XDDFRunProperties addDefaultRunProperties() {
return getOrCreateProperties().addDefaultRunProperties();
}

public XDDFRunProperties getDefaultRunProperties() {
if (_p.isSetPPr()) {
return getProperties().getDefaultRunProperties();

Loading…
取消
儲存