mirror of https://github.com/apache/poi.git
Bugzilla 52561: Added methods to set table inside borders and cell margins in XWPF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1241383 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
dd9c547ea3
commit
fe10b2c7bc
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.8-beta6" date="2012-??-??">
|
<release version="3.8-beta6" date="2012-??-??">
|
||||||
|
<action dev="poi-developers" type="add">52561 - Added methods to set table inside borders and cell margins in XWPF</action>
|
||||||
<action dev="poi-developers" type="add">52569 - Support DConRefRecord in HSSF</action>
|
<action dev="poi-developers" type="add">52569 - Support DConRefRecord in HSSF</action>
|
||||||
<action dev="poi-developers" type="add">52575 - added an option to ignore missing workbook references in formula evaluator</action>
|
<action dev="poi-developers" type="add">52575 - added an option to ignore missing workbook references in formula evaluator</action>
|
||||||
<action dev="poi-developers" type="add">Validate address of hyperlinks in XSSF</action>
|
<action dev="poi-developers" type="add">Validate address of hyperlinks in XSSF</action>
|
||||||
|
|
|
@ -18,14 +18,20 @@ package org.apache.poi.xwpf.usermodel;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.EnumMap;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.POIXMLDocumentPart;
|
import org.apache.poi.POIXMLDocumentPart;
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTString;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblCellMar;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
|
||||||
|
@ -39,6 +45,15 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
|
||||||
* of paragraphs (and other block-level content) arranged in rows and columns.
|
* of paragraphs (and other block-level content) arranged in rows and columns.
|
||||||
*
|
*
|
||||||
* @author Yury Batrakov (batrakov at gmail.com)
|
* @author Yury Batrakov (batrakov at gmail.com)
|
||||||
|
* @author Gregg Morris (gregg dot morris at gmail dot com) - added
|
||||||
|
* setStyleID()
|
||||||
|
* getRowBandSize(), setRowBandSize()
|
||||||
|
* getColBandSize(), setColBandSize()
|
||||||
|
* getInsideHBorderType(), getInsideHBorderSize(), getInsideHBorderSpace(), getInsideHBorderColor()
|
||||||
|
* getInsideVBorderType(), getInsideVBorderSize(), getInsideVBorderSpace(), getInsideVBorderColor()
|
||||||
|
* setInsideHBorder(), setInsideVBorder()
|
||||||
|
* getCellMarginTop(), getCellMarginLeft(), getCellMarginBottom(), getCellMarginRight()
|
||||||
|
* setCellMargins()
|
||||||
*/
|
*/
|
||||||
public class XWPFTable implements IBodyElement{
|
public class XWPFTable implements IBodyElement{
|
||||||
|
|
||||||
|
@ -46,15 +61,47 @@ public class XWPFTable implements IBodyElement{
|
||||||
private CTTbl ctTbl;
|
private CTTbl ctTbl;
|
||||||
protected List<XWPFTableRow> tableRows;
|
protected List<XWPFTableRow> tableRows;
|
||||||
protected List<String> styleIDs;
|
protected List<String> styleIDs;
|
||||||
|
|
||||||
|
// Create a map from this XWPF-level enum to the STBorder.Enum values
|
||||||
|
public static enum XWPFBorderType { NIL, NONE, SINGLE, THICK, DOUBLE, DOTTED, DASHED, DOT_DASH };
|
||||||
|
private static EnumMap<XWPFBorderType, STBorder.Enum> xwpfBorderTypeMap;
|
||||||
|
// Create a map from the STBorder.Enum values to the XWPF-level enums
|
||||||
|
private static HashMap<Integer, XWPFBorderType> stBorderTypeMap;
|
||||||
|
|
||||||
protected IBody part;
|
protected IBody part;
|
||||||
|
|
||||||
|
static {
|
||||||
|
// populate enum maps
|
||||||
|
xwpfBorderTypeMap = new EnumMap<XWPFBorderType, STBorder.Enum>(XWPFBorderType.class);
|
||||||
|
xwpfBorderTypeMap.put(XWPFBorderType.NIL, STBorder.Enum.forInt(STBorder.INT_NIL));
|
||||||
|
xwpfBorderTypeMap.put(XWPFBorderType.NONE, STBorder.Enum.forInt(STBorder.INT_NONE));
|
||||||
|
xwpfBorderTypeMap.put(XWPFBorderType.SINGLE, STBorder.Enum.forInt(STBorder.INT_SINGLE));
|
||||||
|
xwpfBorderTypeMap.put(XWPFBorderType.THICK, STBorder.Enum.forInt(STBorder.INT_THICK));
|
||||||
|
xwpfBorderTypeMap.put(XWPFBorderType.DOUBLE, STBorder.Enum.forInt(STBorder.INT_DOUBLE));
|
||||||
|
xwpfBorderTypeMap.put(XWPFBorderType.DOTTED, STBorder.Enum.forInt(STBorder.INT_DOTTED));
|
||||||
|
xwpfBorderTypeMap.put(XWPFBorderType.DASHED, STBorder.Enum.forInt(STBorder.INT_DASHED));
|
||||||
|
xwpfBorderTypeMap.put(XWPFBorderType.DOT_DASH, STBorder.Enum.forInt(STBorder.INT_DOT_DASH));
|
||||||
|
|
||||||
|
stBorderTypeMap = new HashMap<Integer, XWPFBorderType>();
|
||||||
|
stBorderTypeMap.put(STBorder.INT_NIL, XWPFBorderType.NIL);
|
||||||
|
stBorderTypeMap.put(STBorder.INT_NONE, XWPFBorderType.NONE);
|
||||||
|
stBorderTypeMap.put(STBorder.INT_SINGLE, XWPFBorderType.SINGLE);
|
||||||
|
stBorderTypeMap.put(STBorder.INT_THICK, XWPFBorderType.THICK);
|
||||||
|
stBorderTypeMap.put(STBorder.INT_DOUBLE, XWPFBorderType.DOUBLE);
|
||||||
|
stBorderTypeMap.put(STBorder.INT_DOTTED, XWPFBorderType.DOTTED);
|
||||||
|
stBorderTypeMap.put(STBorder.INT_DASHED, XWPFBorderType.DASHED);
|
||||||
|
stBorderTypeMap.put(STBorder.INT_DOT_DASH, XWPFBorderType.DOT_DASH);
|
||||||
|
}
|
||||||
|
|
||||||
public XWPFTable(CTTbl table, IBody part, int row, int col) {
|
public XWPFTable(CTTbl table, IBody part, int row, int col) {
|
||||||
this(table, part);
|
this(table, part);
|
||||||
|
|
||||||
for (int i = 0; i < row; i++) {
|
for (int i = 0; i < row; i++) {
|
||||||
XWPFTableRow tabRow = (getRow(i) == null) ? createRow() : getRow(i);
|
XWPFTableRow tabRow = (getRow(i) == null) ? createRow() : getRow(i);
|
||||||
for (int k = 0; k < col; k++) {
|
for (int k = 0; k < col; k++) {
|
||||||
XWPFTableCell tabCell = (tabRow.getCell(k) == null) ? tabRow
|
if (tabRow.getCell(k) == null) {
|
||||||
.createCell() : null;
|
tabRow.createCell();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -218,7 +265,266 @@ public class XWPFTable implements IBodyElement{
|
||||||
* @return style-ID of the table
|
* @return style-ID of the table
|
||||||
*/
|
*/
|
||||||
public String getStyleID(){
|
public String getStyleID(){
|
||||||
return ctTbl.getTblPr().getTblStyle().getVal();
|
String styleId = null;
|
||||||
|
CTTblPr tblPr = ctTbl.getTblPr();
|
||||||
|
if (tblPr != null) {
|
||||||
|
CTString styleStr = tblPr.getTblStyle();
|
||||||
|
if (styleStr != null) {
|
||||||
|
styleId = styleStr.getVal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return styleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the table style. If the style is not defined in the document, MS Word
|
||||||
|
* will set the table style to "Normal".
|
||||||
|
* @param styleName - the style name to apply to this table
|
||||||
|
*/
|
||||||
|
public void setStyleID(String styleName) {
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTString styleStr = tblPr.getTblStyle();
|
||||||
|
if (styleStr == null) {
|
||||||
|
styleStr = tblPr.addNewTblStyle();
|
||||||
|
}
|
||||||
|
styleStr.setVal(styleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public XWPFBorderType getInsideHBorderType() {
|
||||||
|
XWPFBorderType bt = null;
|
||||||
|
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblBorders()) {
|
||||||
|
CTTblBorders ctb = tblPr.getTblBorders();
|
||||||
|
if (ctb.isSetInsideH()) {
|
||||||
|
CTBorder border = ctb.getInsideH();
|
||||||
|
bt = stBorderTypeMap.get(border.getVal().intValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInsideHBorderSize() {
|
||||||
|
int size = -1;
|
||||||
|
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblBorders()) {
|
||||||
|
CTTblBorders ctb = tblPr.getTblBorders();
|
||||||
|
if (ctb.isSetInsideH()) {
|
||||||
|
CTBorder border = ctb.getInsideH();
|
||||||
|
size = border.getSz().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInsideHBorderSpace() {
|
||||||
|
int space = -1;
|
||||||
|
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblBorders()) {
|
||||||
|
CTTblBorders ctb = tblPr.getTblBorders();
|
||||||
|
if (ctb.isSetInsideH()) {
|
||||||
|
CTBorder border = ctb.getInsideH();
|
||||||
|
space = border.getSpace().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return space;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInsideHBorderColor() {
|
||||||
|
String color = null;
|
||||||
|
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblBorders()) {
|
||||||
|
CTTblBorders ctb = tblPr.getTblBorders();
|
||||||
|
if (ctb.isSetInsideH()) {
|
||||||
|
CTBorder border = ctb.getInsideH();
|
||||||
|
color = border.xgetColor().getStringValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public XWPFBorderType getInsideVBorderType() {
|
||||||
|
XWPFBorderType bt = null;
|
||||||
|
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblBorders()) {
|
||||||
|
CTTblBorders ctb = tblPr.getTblBorders();
|
||||||
|
if (ctb.isSetInsideV()) {
|
||||||
|
CTBorder border = ctb.getInsideV();
|
||||||
|
bt = stBorderTypeMap.get(border.getVal().intValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInsideVBorderSize() {
|
||||||
|
int size = -1;
|
||||||
|
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblBorders()) {
|
||||||
|
CTTblBorders ctb = tblPr.getTblBorders();
|
||||||
|
if (ctb.isSetInsideV()) {
|
||||||
|
CTBorder border = ctb.getInsideV();
|
||||||
|
size = border.getSz().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInsideVBorderSpace() {
|
||||||
|
int space = -1;
|
||||||
|
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblBorders()) {
|
||||||
|
CTTblBorders ctb = tblPr.getTblBorders();
|
||||||
|
if (ctb.isSetInsideV()) {
|
||||||
|
CTBorder border = ctb.getInsideV();
|
||||||
|
space = border.getSpace().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return space;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInsideVBorderColor() {
|
||||||
|
String color = null;
|
||||||
|
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblBorders()) {
|
||||||
|
CTTblBorders ctb = tblPr.getTblBorders();
|
||||||
|
if (ctb.isSetInsideV()) {
|
||||||
|
CTBorder border = ctb.getInsideV();
|
||||||
|
color = border.xgetColor().getStringValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRowBandSize() {
|
||||||
|
int size = 0;
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblStyleRowBandSize()) {
|
||||||
|
CTDecimalNumber rowSize = tblPr.getTblStyleRowBandSize();
|
||||||
|
size = rowSize.getVal().intValue();
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRowBandSize(int size) {
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTDecimalNumber rowSize = tblPr.isSetTblStyleRowBandSize() ? tblPr.getTblStyleRowBandSize() : tblPr.addNewTblStyleRowBandSize();
|
||||||
|
rowSize.setVal(BigInteger.valueOf(size));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getColBandSize() {
|
||||||
|
int size = 0;
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
if (tblPr.isSetTblStyleColBandSize()) {
|
||||||
|
CTDecimalNumber colSize = tblPr.getTblStyleColBandSize();
|
||||||
|
size = colSize.getVal().intValue();
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColBandSize(int size) {
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTDecimalNumber colSize = tblPr.isSetTblStyleColBandSize() ? tblPr.getTblStyleColBandSize() : tblPr.addNewTblStyleColBandSize();
|
||||||
|
colSize.setVal(BigInteger.valueOf(size));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInsideHBorder(XWPFBorderType type, int size, int space, String rgbColor) {
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTTblBorders ctb = tblPr.isSetTblBorders() ? tblPr.getTblBorders() : tblPr.addNewTblBorders();
|
||||||
|
CTBorder b = ctb.isSetInsideH() ? ctb.getInsideH() : ctb.addNewInsideH();
|
||||||
|
b.setVal(xwpfBorderTypeMap.get(type));
|
||||||
|
b.setSz(BigInteger.valueOf(size));
|
||||||
|
b.setSpace(BigInteger.valueOf(space));
|
||||||
|
b.setColor(rgbColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInsideVBorder(XWPFBorderType type, int size, int space, String rgbColor) {
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTTblBorders ctb = tblPr.isSetTblBorders() ? tblPr.getTblBorders() : tblPr.addNewTblBorders();
|
||||||
|
CTBorder b = ctb.isSetInsideV() ? ctb.getInsideV() : ctb.addNewInsideV();
|
||||||
|
b.setVal(xwpfBorderTypeMap.get(type));
|
||||||
|
b.setSz(BigInteger.valueOf(size));
|
||||||
|
b.setSpace(BigInteger.valueOf(space));
|
||||||
|
b.setColor(rgbColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCellMarginTop() {
|
||||||
|
int margin = 0;
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTTblCellMar tcm = tblPr.getTblCellMar();
|
||||||
|
if (tcm != null) {
|
||||||
|
CTTblWidth tw = tcm.getTop();
|
||||||
|
if (tw != null) {
|
||||||
|
margin = tw.getW().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCellMarginLeft() {
|
||||||
|
int margin = 0;
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTTblCellMar tcm = tblPr.getTblCellMar();
|
||||||
|
if (tcm != null) {
|
||||||
|
CTTblWidth tw = tcm.getLeft();
|
||||||
|
if (tw != null) {
|
||||||
|
margin = tw.getW().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCellMarginBottom() {
|
||||||
|
int margin = 0;
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTTblCellMar tcm = tblPr.getTblCellMar();
|
||||||
|
if (tcm != null) {
|
||||||
|
CTTblWidth tw = tcm.getBottom();
|
||||||
|
if (tw != null) {
|
||||||
|
margin = tw.getW().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCellMarginRight() {
|
||||||
|
int margin = 0;
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTTblCellMar tcm = tblPr.getTblCellMar();
|
||||||
|
if (tcm != null) {
|
||||||
|
CTTblWidth tw = tcm.getRight();
|
||||||
|
if (tw != null) {
|
||||||
|
margin = tw.getW().intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCellMargins(int top, int left, int bottom, int right) {
|
||||||
|
CTTblPr tblPr = getTrPr();
|
||||||
|
CTTblCellMar tcm = tblPr.isSetTblCellMar() ? tblPr.getTblCellMar() : tblPr.addNewTblCellMar();
|
||||||
|
|
||||||
|
CTTblWidth tw = tcm.isSetLeft() ? tcm.getLeft() : tcm.addNewLeft();
|
||||||
|
tw.setType(STTblWidth.DXA);
|
||||||
|
tw.setW(BigInteger.valueOf(left));
|
||||||
|
|
||||||
|
tw = tcm.isSetTop() ? tcm.getTop() : tcm.addNewTop();
|
||||||
|
tw.setType(STTblWidth.DXA);
|
||||||
|
tw.setW(BigInteger.valueOf(top));
|
||||||
|
|
||||||
|
tw = tcm.isSetBottom() ? tcm.getBottom() : tcm.addNewBottom();
|
||||||
|
tw.setType(STTblWidth.DXA);
|
||||||
|
tw.setW(BigInteger.valueOf(bottom));
|
||||||
|
|
||||||
|
tw = tcm.isSetRight() ? tcm.getRight() : tcm.addNewRight();
|
||||||
|
tw.setType(STTblWidth.DXA);
|
||||||
|
tw.setW(BigInteger.valueOf(right));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -269,7 +575,9 @@ public class XWPFTable implements IBodyElement{
|
||||||
*/
|
*/
|
||||||
public boolean removeRow(int pos) throws IndexOutOfBoundsException {
|
public boolean removeRow(int pos) throws IndexOutOfBoundsException {
|
||||||
if (pos >= 0 && pos < tableRows.size()) {
|
if (pos >= 0 && pos < tableRows.size()) {
|
||||||
|
if (ctTbl.sizeOfTrArray() > 0) {
|
||||||
ctTbl.removeTr(pos);
|
ctTbl.removeTr(pos);
|
||||||
|
}
|
||||||
tableRows.remove(pos);
|
tableRows.remove(pos);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,12 +22,19 @@ import java.util.List;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
||||||
|
import org.apache.poi.xwpf.usermodel.XWPFTable.XWPFBorderType;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblCellMar;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for XWPF Run
|
* Tests for XWPF Run
|
||||||
|
@ -132,11 +139,95 @@ public class TestXWPFTable extends TestCase {
|
||||||
assertEquals(20, row.getHeight());
|
assertEquals(20, row.getHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testSetGetMargins() {
|
||||||
|
// instantiate the following class so it'll get picked up by
|
||||||
|
// the XmlBean process and added to the jar file. it's required
|
||||||
|
// for the following XWPFTable methods.
|
||||||
|
CTTblCellMar ctm = CTTblCellMar.Factory.newInstance();
|
||||||
|
assertNotNull(ctm);
|
||||||
|
// create a table
|
||||||
|
XWPFDocument doc = new XWPFDocument();
|
||||||
|
CTTbl ctTable = CTTbl.Factory.newInstance();
|
||||||
|
XWPFTable table = new XWPFTable(ctTable, doc);
|
||||||
|
// set margins
|
||||||
|
table.setCellMargins(50, 50, 250, 450);
|
||||||
|
// get margin components
|
||||||
|
int t = table.getCellMarginTop();
|
||||||
|
assertEquals(50, t);
|
||||||
|
int l = table.getCellMarginLeft();
|
||||||
|
assertEquals(50, l);
|
||||||
|
int b = table.getCellMarginBottom();
|
||||||
|
assertEquals(250, b);
|
||||||
|
int r = table.getCellMarginRight();
|
||||||
|
assertEquals(450, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSetGetHBorders() {
|
||||||
|
// instantiate the following classes so they'll get picked up by
|
||||||
|
// the XmlBean process and added to the jar file. they are required
|
||||||
|
// for the following XWPFTable methods.
|
||||||
|
CTTblBorders cttb = CTTblBorders.Factory.newInstance();
|
||||||
|
assertNotNull(cttb);
|
||||||
|
STBorder stb = STBorder.Factory.newInstance();
|
||||||
|
assertNotNull(stb);
|
||||||
|
// create a table
|
||||||
|
XWPFDocument doc = new XWPFDocument();
|
||||||
|
CTTbl ctTable = CTTbl.Factory.newInstance();
|
||||||
|
XWPFTable table = new XWPFTable(ctTable, doc);
|
||||||
|
// set inside horizontal border
|
||||||
|
table.setInsideHBorder(XWPFBorderType.SINGLE, 4, 0, "FF0000");
|
||||||
|
// get inside horizontal border components
|
||||||
|
int s = table.getInsideHBorderSize();
|
||||||
|
assertEquals(4, s);
|
||||||
|
int sp = table.getInsideHBorderSpace();
|
||||||
|
assertEquals(0, sp);
|
||||||
|
String clr = table.getInsideHBorderColor();
|
||||||
|
assertEquals("FF0000", clr);
|
||||||
|
XWPFBorderType bt = table.getInsideHBorderType();
|
||||||
|
assertEquals(XWPFBorderType.SINGLE, bt);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSetGetVBorders() {
|
||||||
|
// create a table
|
||||||
|
XWPFDocument doc = new XWPFDocument();
|
||||||
|
CTTbl ctTable = CTTbl.Factory.newInstance();
|
||||||
|
XWPFTable table = new XWPFTable(ctTable, doc);
|
||||||
|
// set inside vertical border
|
||||||
|
table.setInsideVBorder(XWPFBorderType.DOUBLE, 4, 0, "00FF00");
|
||||||
|
// get inside vertical border components
|
||||||
|
XWPFBorderType bt = table.getInsideVBorderType();
|
||||||
|
assertEquals(XWPFBorderType.DOUBLE, bt);
|
||||||
|
int sz = table.getInsideVBorderSize();
|
||||||
|
assertEquals(4, sz);
|
||||||
|
int sp = table.getInsideVBorderSpace();
|
||||||
|
assertEquals(0, sp);
|
||||||
|
String clr = table.getInsideVBorderColor();
|
||||||
|
assertEquals("00FF00", clr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSetGetRowBandSize() {
|
||||||
|
XWPFDocument doc = new XWPFDocument();
|
||||||
|
CTTbl ctTable = CTTbl.Factory.newInstance();
|
||||||
|
XWPFTable table = new XWPFTable(ctTable, doc);
|
||||||
|
table.setRowBandSize(12);
|
||||||
|
int sz = table.getRowBandSize();
|
||||||
|
assertEquals(12, sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSetGetColBandSize() {
|
||||||
|
XWPFDocument doc = new XWPFDocument();
|
||||||
|
CTTbl ctTable = CTTbl.Factory.newInstance();
|
||||||
|
XWPFTable table = new XWPFTable(ctTable, doc);
|
||||||
|
table.setColBandSize(16);
|
||||||
|
int sz = table.getColBandSize();
|
||||||
|
assertEquals(16, sz);
|
||||||
|
}
|
||||||
|
|
||||||
public void testCreateTable() throws Exception {
|
public void testCreateTable() throws Exception {
|
||||||
// open an empty document
|
// open an empty document
|
||||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
|
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
|
||||||
|
|
||||||
// create a table with 5 rows and 7 coloumns
|
// create a table with 5 rows and 7 columns
|
||||||
int noRows = 5;
|
int noRows = 5;
|
||||||
int noCols = 7;
|
int noCols = 7;
|
||||||
XWPFTable table = doc.createTable(noRows,noCols);
|
XWPFTable table = doc.createTable(noRows,noCols);
|
||||||
|
|
Loading…
Reference in New Issue