Fix bug #49508 - Allow the addition of paragraphs to XWPF Table Cells. (Also fixed a few related warnings too)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@958972 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2010-06-29 14:04:11 +00:00
parent 246753cbfa
commit da6d33456f
5 changed files with 15 additions and 10 deletions

View File

@ -34,6 +34,7 @@
<changes> <changes>
<release version="3.7-beta2" date="2010-??-??"> <release version="3.7-beta2" date="2010-??-??">
<action dev="POI-DEVELOPERS" type="add">49508 - Allow the addition of paragraphs to XWPF Table Cells</action>
<action dev="POI-DEVELOPERS" type="fix">49446 - Don't consider 17.16.23 field codes as properly part of the paragraph's text</action> <action dev="POI-DEVELOPERS" type="fix">49446 - Don't consider 17.16.23 field codes as properly part of the paragraph's text</action>
<action dev="POI-DEVELOPERS" type="fix">XSLFSlideShow shouldn't break on .thmx (theme) files. Support for them is still very limited though</action> <action dev="POI-DEVELOPERS" type="fix">XSLFSlideShow shouldn't break on .thmx (theme) files. Support for them is still very limited though</action>
</release> </release>

View File

@ -19,14 +19,11 @@ package org.apache.poi.xwpf.usermodel;
import java.util.List; import java.util.List;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlCursor;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
/** /**
* <p> * <p>
* 8 Jan 2010 * 8 Jan 2010
@ -124,8 +121,5 @@ public interface IBody {
*/ */
XWPFTableCell getTableCell(CTTc cell); XWPFTableCell getTableCell(CTTc cell);
} }

View File

@ -80,7 +80,7 @@ public class XWPFFooter extends XWPFHeaderFooter {
protected void commit() throws IOException { protected void commit() throws IOException {
XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "ftr")); xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "ftr"));
Map map = new HashMap(); Map<String,String> map = new HashMap<String, String>();
map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve"); map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve");
map.put("urn:schemas-microsoft-com:office:office", "o"); map.put("urn:schemas-microsoft-com:office:office", "o");
map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r");

View File

@ -84,7 +84,7 @@ public class XWPFHeader extends XWPFHeaderFooter {
protected void commit() throws IOException { protected void commit() throws IOException {
XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "hdr")); xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "hdr"));
Map map = new HashMap(); Map<String,String> map = new HashMap<String, String>();
map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve"); map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve");
map.put("urn:schemas-microsoft-com:office:office", "o"); map.put("urn:schemas-microsoft-com:office:office", "o");
map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r");

View File

@ -45,7 +45,7 @@ public class XWPFTableCell implements IBody {
this.part = part; this.part = part;
this.tableRow = tableRow; this.tableRow = tableRow;
// NB: If a table cell does not include at least one block-level element, then this document shall be considered corrupt. // NB: If a table cell does not include at least one block-level element, then this document shall be considered corrupt.
if(cell.getPArray().length<1) if(cell.getPList().size()<1)
cell.addNewP(); cell.addNewP();
bodyElements = new ArrayList<IBodyElement>(); bodyElements = new ArrayList<IBodyElement>();
paragraphs = new ArrayList<XWPFParagraph>(); paragraphs = new ArrayList<XWPFParagraph>();
@ -89,6 +89,16 @@ public class XWPFTableCell implements IBody {
return paragraphs; return paragraphs;
} }
/**
* Add a Paragraph to this Table Cell
* @return The paragraph which was added
*/
public XWPFParagraph addParagraph() {
XWPFParagraph p = new XWPFParagraph(ctTc.addNewP(), this);
addParagraph(p);
return p;
}
/** /**
* add a Paragraph to this TableCell * add a Paragraph to this TableCell
* @param p the paragaph which has to be added * @param p the paragaph which has to be added
@ -296,7 +306,7 @@ public class XWPFTableCell implements IBody {
public void insertTable(int pos, XWPFTable table) { public void insertTable(int pos, XWPFTable table) {
bodyElements.add(pos, table); bodyElements.add(pos, table);
int i; int i;
for (i = 0; i < ctTc.getTblArray().length; i++) { for (i = 0; i < ctTc.getTblList().size(); i++) {
CTTbl tbl = ctTc.getTblArray(i); CTTbl tbl = ctTc.getTblArray(i);
if(tbl == table.getCTTbl()){ if(tbl == table.getCTTbl()){
break; break;