git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1746625 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2016-06-02 20:09:44 +00:00
parent ee6c0625d0
commit 6b6aa56455
3 changed files with 33 additions and 25 deletions

View File

@ -163,7 +163,7 @@ public class XWPFTableCell implements IBody, ICell {
/** /**
* removes a paragraph of this tablecell * removes a paragraph of this tablecell
* *
* @param pos * @param pos The position in the list of paragraphs, 0-based
*/ */
public void removeParagraph(int pos) { public void removeParagraph(int pos) {
paragraphs.remove(pos); paragraphs.remove(pos);
@ -234,6 +234,11 @@ public class XWPFTableCell implements IBody, ICell {
CTTcPr tcpr = ctTc.getTcPr(); CTTcPr tcpr = ctTc.getTcPr();
if (tcpr != null) { if (tcpr != null) {
CTVerticalJc va = tcpr.getVAlign(); CTVerticalJc va = tcpr.getVAlign();
if(va != null) {
vAlign = stVertAlignTypeMap.get(va.getVal().intValue());
} else {
vAlign = XWPFVertAlign.TOP;
}
if (va != null && va.getVal() != null) { if (va != null && va.getVal() != null) {
vAlign = stVertAlignTypeMap.get(va.getVal().intValue()); vAlign = stVertAlignTypeMap.get(va.getVal().intValue());
} }
@ -255,7 +260,7 @@ public class XWPFTableCell implements IBody, ICell {
/** /**
* add a new paragraph at position of the cursor * add a new paragraph at position of the cursor
* *
* @param cursor * @param cursor The XmlCursor structure created with XmlBeans
* @return the inserted paragraph * @return the inserted paragraph
*/ */
public XWPFParagraph insertNewParagraph(final XmlCursor cursor) { public XWPFParagraph insertNewParagraph(final XmlCursor cursor) {
@ -417,7 +422,7 @@ public class XWPFTableCell implements IBody, ICell {
} }
public String getText() { public String getText() {
StringBuffer text = new StringBuffer(); StringBuilder text = new StringBuilder();
for (XWPFParagraph p : paragraphs) { for (XWPFParagraph p : paragraphs) {
text.append(p.getText()); text.append(p.getText());
} }
@ -437,7 +442,7 @@ public class XWPFTableCell implements IBody, ICell {
StringBuffer text = new StringBuffer(); StringBuffer text = new StringBuffer();
for (int i = 0; i < bodyElements.size(); i++) { for (int i = 0; i < bodyElements.size(); i++) {
boolean isLast = (i == bodyElements.size() - 1) ? true : false; boolean isLast = (i == bodyElements.size() - 1);
appendBodyElementText(text, bodyElements.get(i), isLast); appendBodyElementText(text, bodyElements.get(i), isLast);
} }
@ -447,7 +452,7 @@ public class XWPFTableCell implements IBody, ICell {
private void appendBodyElementText(StringBuffer text, IBodyElement e, boolean isLast) { private void appendBodyElementText(StringBuffer text, IBodyElement e, boolean isLast) {
if (e instanceof XWPFParagraph) { if (e instanceof XWPFParagraph) {
text.append(((XWPFParagraph) e).getText()); text.append(((XWPFParagraph) e).getText());
if (isLast == false) { if (!isLast) {
text.append('\t'); text.append('\t');
} }
} else if (e instanceof XWPFTable) { } else if (e instanceof XWPFTable) {
@ -456,18 +461,18 @@ public class XWPFTableCell implements IBody, ICell {
for (XWPFTableCell cell : row.getTableCells()) { for (XWPFTableCell cell : row.getTableCells()) {
List<IBodyElement> localBodyElements = cell.getBodyElements(); List<IBodyElement> localBodyElements = cell.getBodyElements();
for (int i = 0; i < localBodyElements.size(); i++) { for (int i = 0; i < localBodyElements.size(); i++) {
boolean localIsLast = (i == localBodyElements.size() - 1) ? true : false; boolean localIsLast = (i == localBodyElements.size() - 1);
appendBodyElementText(text, localBodyElements.get(i), localIsLast); appendBodyElementText(text, localBodyElements.get(i), localIsLast);
} }
} }
} }
if (isLast == false) { if (!isLast) {
text.append('\n'); text.append('\n');
} }
} else if (e instanceof XWPFSDT) { } else if (e instanceof XWPFSDT) {
text.append(((XWPFSDT) e).getContent().getText()); text.append(((XWPFSDT) e).getContent().getText());
if (isLast == false) { if (!isLast) {
text.append('\t'); text.append('\t');
} }
} }
@ -507,7 +512,7 @@ public class XWPFTableCell implements IBody, ICell {
} }
// Create a map from this XWPF-level enum to the STVerticalJc.Enum values // Create a map from this XWPF-level enum to the STVerticalJc.Enum values
public static enum XWPFVertAlign { public enum XWPFVertAlign {
TOP, CENTER, BOTH, BOTTOM TOP, CENTER, BOTH, BOTTOM
} }
} }

View File

@ -19,23 +19,12 @@
package org.apache.poi.xwpf.usermodel; package org.apache.poi.xwpf.usermodel;
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.XWPFTableCell.XWPFVertAlign; import org.apache.poi.xwpf.usermodel.XWPFTableCell.XWPFVertAlign;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge; import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; import java.util.List;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcBorders;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;
public class TestXWPFTableCell extends TestCase { public class TestXWPFTableCell extends TestCase {
@Override @Override
@ -117,9 +106,23 @@ public class TestXWPFTableCell extends TestCase {
List<XWPFTableRow> tableRows = table.getRows(); List<XWPFTableRow> tableRows = table.getRows();
assertEquals(2, tableRows.size()); assertEquals(2, tableRows.size());
assertNull(tableRows.get(0).getCell(0).getVerticalAlignment()); assertEquals(XWPFVertAlign.TOP, tableRows.get(0).getCell(0).getVerticalAlignment());
assertEquals(XWPFVertAlign.BOTTOM, tableRows.get(0).getCell(1).getVerticalAlignment()); assertEquals(XWPFVertAlign.BOTTOM, tableRows.get(0).getCell(1).getVerticalAlignment());
assertEquals(XWPFVertAlign.CENTER, tableRows.get(1).getCell(0).getVerticalAlignment()); assertEquals(XWPFVertAlign.CENTER, tableRows.get(1).getCell(0).getVerticalAlignment());
assertNull(tableRows.get(1).getCell(1).getVerticalAlignment()); assertEquals(XWPFVertAlign.TOP, tableRows.get(1).getCell(1).getVerticalAlignment());
} }
public void testCellVerticalAlign2() throws Exception{
XWPFDocument docx = XWPFTestDataSamples.openSampleDocument("TestTableCellAlign.docx");
List<XWPFTable> tables = docx.getTables();
for (XWPFTable table : tables) {
List<XWPFTableRow> tableRows = table.getRows();
for (XWPFTableRow tableRow : tableRows) {
List<XWPFTableCell> tableCells = tableRow.getTableCells();
for (XWPFTableCell tableCell : tableCells) {
assertNotNull(tableCell.getVerticalAlignment());
}
}
}
}
} }

Binary file not shown.