import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
/**
- * <p>
- * 8 Jan 2010
+ * <p>An IBody represents the different parts of the document which
+ * can contain collections of Paragraphs and Tables. It provides a
+ * common way to work with these and their contents.</p>
+ * <p>Typically, this is something like a XWPFDocument, or one of
+ * the parts in it like XWPFHeader, XWPFFooter, XWPFTableCell
* </p>
- * <p>
- * // This Interface represents an object, which is able to have a collection of paragraphs and tables
- * this can be XWFPDocument, XWPFHeader, XWPFFooter, XWPFTableCell
- * </p>
- * @author Philipp Epp
- *
*/
public interface IBody {
- /**
- * returns the Part, to which the body belongs, which you need for adding relationship to other parts
- * Actually it is needed of the class XWPFTableCell. Because you have to know to which part the tableCell
- * belongs.
- * @return the Part, to which the body belongs
- */
- POIXMLDocumentPart getPart();
-
- /**
- * get the PartType of the body, for example
- * DOCUMENT, HEADER, FOOTER, FOOTNOTE,
- * @return the PartType of the body
- */
- BodyType getPartType();
-
- /**
- * Returns an Iterator with paragraphs and tables,
- * in the order that they occur in the text.
- */
- public List<IBodyElement> getBodyElements();
-
- /**
- * Returns the paragraph(s) that holds
- * the text of the header or footer.
- */
+ /**
+ * returns the Part, to which the body belongs, which you need for adding relationship to other parts
+ * Actually it is needed of the class XWPFTableCell. Because you have to know to which part the tableCell
+ * belongs.
+ * @return the Part, to which the body belongs
+ */
+ public POIXMLDocumentPart getPart();
+
+ /**
+ * get the PartType of the body, for example
+ * DOCUMENT, HEADER, FOOTER, FOOTNOTE,
+ * @return the PartType of the body
+ */
+ public BodyType getPartType();
+
+ /**
+ * Returns an Iterator with paragraphs and tables,
+ * in the order that they occur in the text.
+ */
+ public List<IBodyElement> getBodyElements();
+
+ /**
+ * Returns the paragraph(s) that holds
+ * the text of the header or footer.
+ */
public List<XWPFParagraph> getParagraphs();
- /**
- * Return the table(s) that holds the text
- * of the IBodyPart, for complex cases
- * where a paragraph isn't used.
- */
- public List<XWPFTable> getTables();
-
- /**
- * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer
- * the method will return this paragraph
- * if there is no corresponding {@link XWPFParagraph} the method will return null
- * @param p is instance of CTP and is searching for an XWPFParagraph
- * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer
- * XWPFParagraph with the correspondig CTP p
- */
- public XWPFParagraph getParagraph(CTP p);
-
- /**
- * if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header
- * the method will return this table
- * if there is no corresponding {@link XWPFTable} the method will return null
- * @param ctTable
- */
- public XWPFTable getTable(CTTbl ctTable);
-
- /**
- * Returns the paragraph that of position pos
- */
- public XWPFParagraph getParagraphArray(int pos);
-
- /**
- * Returns the table at position pos
- */
- public XWPFTable getTableArray(int pos);
-
- /**
- *inserts a new paragraph at position of the cursor
- * @param cursor
- */
- public XWPFParagraph insertNewParagraph(XmlCursor cursor);
-
- /**
- * inserts a new Table at the cursor position.
- * @param cursor
- */
- public XWPFTable insertNewTbl(XmlCursor cursor);
-
- /**
- * inserts a new Table at position pos
- * @param pos
- * @param table
- */
- void insertTable(int pos, XWPFTable table);
-
- /**
- * returns the TableCell to which the Table belongs
- * @param cell
- */
- XWPFTableCell getTableCell(CTTc cell);
+ /**
+ * Return the table(s) that holds the text
+ * of the IBodyPart, for complex cases
+ * where a paragraph isn't used.
+ */
+ public List<XWPFTable> getTables();
+
+ /**
+ * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer
+ * the method will return this paragraph
+ * if there is no corresponding {@link XWPFParagraph} the method will return null
+ * @param p is instance of CTP and is searching for an XWPFParagraph
+ * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer
+ * XWPFParagraph with the correspondig CTP p
+ */
+ public XWPFParagraph getParagraph(CTP p);
+
+ /**
+ * if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header
+ * the method will return this table
+ * if there is no corresponding {@link XWPFTable} the method will return null
+ * @param ctTable
+ */
+ public XWPFTable getTable(CTTbl ctTable);
+
+ /**
+ * Returns the paragraph that of position pos
+ */
+ public XWPFParagraph getParagraphArray(int pos);
+
+ /**
+ * Returns the table at position pos
+ */
+ public XWPFTable getTableArray(int pos);
+
+ /**
+ *inserts a new paragraph at position of the cursor
+ * @param cursor
+ */
+ public XWPFParagraph insertNewParagraph(XmlCursor cursor);
+
+ /**
+ * inserts a new Table at the cursor position.
+ * @param cursor
+ */
+ public XWPFTable insertNewTbl(XmlCursor cursor);
+
+ /**
+ * inserts a new Table at position pos
+ * @param pos
+ * @param table
+ */
+ void insertTable(int pos, XWPFTable table);
+
+ /**
+ * returns the TableCell to which the Table belongs
+ * @param cell
+ */
+ public XWPFTableCell getTableCell(CTTc cell);
/**
* Return XWPFDocument
*/
public XWPFDocument getXWPFDocument();
-
}
-
import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument;
/**
- * Experimental class to do low level processing
- * of docx files.
- *
- * If you're using these low level classes, then you
- * will almost certainly need to refer to the OOXML
- * specifications from
+ * <p>High(ish) level class for working with .docx files.</p>
+ *
+ * <p>This class tries to hide some of the complexity
+ * of the underlying file format, but as it's not a
+ * mature and stable API yet, certain parts of the
+ * XML structure come through. You'll therefore almost
+ * certainly need to refer to the OOXML specifications
+ * from
* http://www.ecma-international.org/publications/standards/Ecma-376.htm
- *
- * WARNING - APIs expected to change rapidly
+ * at some point in your use.</p>
*/
public class XWPFDocument extends POIXMLDocument implements Document, IBody {
-
private CTDocument1 ctDocument;
private XWPFSettings settings;
/**
private XWPFHeaderFooterPolicy headerFooterPolicy;
public XWPFDocument(OPCPackage pkg) throws IOException {
- super(pkg);
+ super(pkg);
- //build a tree of POIXMLDocumentParts, this document being the root
- load(XWPFFactory.getInstance());
+ //build a tree of POIXMLDocumentParts, this document being the root
+ load(XWPFFactory.getInstance());
}
public XWPFDocument(InputStream is) throws IOException {
- super(PackageHelper.open(is));
+ super(PackageHelper.open(is));
- //build a tree of POIXMLDocumentParts, this workbook being the root
- load(XWPFFactory.getInstance());
+ //build a tree of POIXMLDocumentParts, this workbook being the root
+ load(XWPFFactory.getInstance());
}
public XWPFDocument(){
- super(newPackage());
- onDocumentCreate();
+ super(newPackage());
+ onDocumentCreate();
}
@Override
protected void onDocumentRead() throws IOException {
- try {
- DocumentDocument doc = DocumentDocument.Factory.parse(getPackagePart().getInputStream());
- ctDocument = doc.getDocument();
+ try {
+ DocumentDocument doc = DocumentDocument.Factory.parse(getPackagePart().getInputStream());
+ ctDocument = doc.getDocument();
- initFootnotes();
+ initFootnotes();
// parse the document with cursor and add
// the XmlObject to its lists
}
private void initHyperlinks(){
- // Get the hyperlinks
- // TODO: make me optional/separated in private function
- try {
- Iterator<PackageRelationship> relIter =
- getPackagePart().getRelationshipsByType(XWPFRelation.HYPERLINK.getRelation()).iterator();
- while(relIter.hasNext()) {
- PackageRelationship rel = relIter.next();
- hyperlinks.add(new XWPFHyperlink(rel.getId(), rel.getTargetURI().toString()));
- }
- } catch (InvalidFormatException e){
- throw new POIXMLException(e);
- }
+ // Get the hyperlinks
+ // TODO: make me optional/separated in private function
+ try {
+ Iterator<PackageRelationship> relIter =
+ getPackagePart().getRelationshipsByType(XWPFRelation.HYPERLINK.getRelation()).iterator();
+ while(relIter.hasNext()) {
+ PackageRelationship rel = relIter.next();
+ hyperlinks.add(new XWPFHyperlink(rel.getId(), rel.getTargetURI().toString()));
+ }
+ } catch (InvalidFormatException e){
+ throw new POIXMLException(e);
+ }
}
private void initFootnotes() throws XmlException, IOException {
- for(POIXMLDocumentPart p : getRelations()){
- String relation = p.getPackageRelationship().getRelationshipType();
- if (relation.equals(XWPFRelation.FOOTNOTE.getRelation())) {
- FootnotesDocument footnotesDocument = FootnotesDocument.Factory.parse(p.getPackagePart().getInputStream());
- this.footnotes = (XWPFFootnotes)p;
- this.footnotes.onDocumentRead();
-
- for(CTFtnEdn ctFtnEdn : footnotesDocument.getFootnotes().getFootnoteList()) {
- footnotes.addFootnote(ctFtnEdn);
- }
- } else if (relation.equals(XWPFRelation.ENDNOTE.getRelation())){
- EndnotesDocument endnotesDocument = EndnotesDocument.Factory.parse(p.getPackagePart().getInputStream());
+ for(POIXMLDocumentPart p : getRelations()){
+ String relation = p.getPackageRelationship().getRelationshipType();
+ if (relation.equals(XWPFRelation.FOOTNOTE.getRelation())) {
+ FootnotesDocument footnotesDocument = FootnotesDocument.Factory.parse(p.getPackagePart().getInputStream());
+ this.footnotes = (XWPFFootnotes)p;
+ this.footnotes.onDocumentRead();
+
+ for(CTFtnEdn ctFtnEdn : footnotesDocument.getFootnotes().getFootnoteList()) {
+ footnotes.addFootnote(ctFtnEdn);
+ }
+ } else if (relation.equals(XWPFRelation.ENDNOTE.getRelation())){
+ EndnotesDocument endnotesDocument = EndnotesDocument.Factory.parse(p.getPackagePart().getInputStream());
- for(CTFtnEdn ctFtnEdn : endnotesDocument.getEndnotes().getEndnoteList()) {
- endnotes.put(ctFtnEdn.getId().intValue(), new XWPFFootnote(this, ctFtnEdn));
- }
- }
- }
+ for(CTFtnEdn ctFtnEdn : endnotesDocument.getEndnotes().getEndnoteList()) {
+ endnotes.put(ctFtnEdn.getId().intValue(), new XWPFFootnote(this, ctFtnEdn));
+ }
+ }
+ }
}
/**
* Create a new WordProcessingML package and setup the default minimal content
*/
protected static OPCPackage newPackage() {
- try {
+ try {
OPCPackage pkg = OPCPackage.create(new ByteArrayOutputStream());
// Main part
PackagePartName corePartName = PackagingURIHelper.createPartName(XWPFRelation.DOCUMENT.getDefaultFileName());
*/
@Internal
public CTDocument1 getDocument() {
- return ctDocument;
+ return ctDocument;
}
IdentifierManager getDrawingIdManager() {
- return drawingIdManager;
+ return drawingIdManager;
}
-
+
/**
* returns an Iterator with paragraphs and tables
* @see org.apache.poi.xwpf.usermodel.IBody#getBodyElements()
*/
- public List<IBodyElement> getBodyElements(){
- return Collections.unmodifiableList(bodyElements);
+ public List<IBodyElement> getBodyElements() {
+ return Collections.unmodifiableList(bodyElements);
}
-
+
public Iterator<IBodyElement> getBodyElementsIterator() {
- return bodyElements.iterator();
+ return bodyElements.iterator();
}
/**
- * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphs()
+ * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphs()
*/
- public List<XWPFParagraph> getParagraphs(){
- return Collections.unmodifiableList(paragraphs);
+ public List<XWPFParagraph> getParagraphs(){
+ return Collections.unmodifiableList(paragraphs);
}
-
- /**
- * @see org.apache.poi.xwpf.usermodel.IBody#getTables()
- */
- public List<XWPFTable> getTables(){
- return Collections.unmodifiableList(tables);
- }
-
- /**
- * @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int)
- */
- public XWPFTable getTableArray(int pos) {
- if(pos > 0 && pos < tables.size()){
- return tables.get(pos);
- }
- return null;
+
+ /**
+ * @see org.apache.poi.xwpf.usermodel.IBody#getTables()
+ */
+ public List<XWPFTable> getTables(){
+ return Collections.unmodifiableList(tables);
+ }
+
+ /**
+ * @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int)
+ */
+ public XWPFTable getTableArray(int pos) {
+ if(pos > 0 && pos < tables.size()){
+ return tables.get(pos);
}
-
- /**
- *
- * @return the list of footers
- */
- public List<XWPFFooter> getFooterList(){
- return Collections.unmodifiableList(footers);
- }
-
- public XWPFFooter getFooterArray(int pos){
- return footers.get(pos);
- }
-
- /**
- *
- * @return the list of headers
- */
- public List<XWPFHeader> getHeaderList(){
- return Collections.unmodifiableList(headers);
- }
-
- public XWPFHeader getHeaderArray(int pos){
- return headers.get(pos);
- }
-
+ return null;
+ }
+
+ /**
+ *
+ * @return the list of footers
+ */
+ public List<XWPFFooter> getFooterList(){
+ return Collections.unmodifiableList(footers);
+ }
+
+ public XWPFFooter getFooterArray(int pos){
+ return footers.get(pos);
+ }
+
+ /**
+ *
+ * @return the list of headers
+ */
+ public List<XWPFHeader> getHeaderList(){
+ return Collections.unmodifiableList(headers);
+ }
+
+ public XWPFHeader getHeaderArray(int pos){
+ return headers.get(pos);
+ }
+
public String getTblStyle(XWPFTable table){
- return table.getStyleID();
+ return table.getStyleID();
}
public XWPFHyperlink getHyperlinkByID(String id) {
- Iterator<XWPFHyperlink> iter = hyperlinks.iterator();
- while (iter.hasNext()) {
- XWPFHyperlink link = iter.next();
- if(link.getId().equals(id))
- return link;
- }
+ Iterator<XWPFHyperlink> iter = hyperlinks.iterator();
+ while (iter.hasNext()) {
+ XWPFHyperlink link = iter.next();
+ if(link.getId().equals(id))
+ return link;
+ }
- return null;
+ return null;
}
public XWPFFootnote getFootnoteByID(int id) {
- if(footnotes == null) return null;
- return footnotes.getFootnoteById(id);
+ if(footnotes == null) return null;
+ return footnotes.getFootnoteById(id);
}
public XWPFFootnote getEndnoteByID(int id) {
- if(endnotes == null) return null;
- return endnotes.get(id);
+ if(endnotes == null) return null;
+ return endnotes.get(id);
}
public List<XWPFFootnote> getFootnotes() {
- if(footnotes == null) {
- return Collections.emptyList();
- }
- return footnotes.getFootnotesList();
+ if(footnotes == null) {
+ return Collections.emptyList();
+ }
+ return footnotes.getFootnotesList();
}
public XWPFHyperlink[] getHyperlinks() {
- return hyperlinks.toArray(new XWPFHyperlink[hyperlinks.size()]);
+ return hyperlinks.toArray(new XWPFHyperlink[hyperlinks.size()]);
}
public XWPFComment getCommentByID(String id) {
- Iterator<XWPFComment> iter = comments.iterator();
- while (iter.hasNext()) {
- XWPFComment comment = iter.next();
- if(comment.getId().equals(id))
- return comment;
- }
+ Iterator<XWPFComment> iter = comments.iterator();
+ while (iter.hasNext()) {
+ XWPFComment comment = iter.next();
+ if(comment.getId().equals(id))
+ return comment;
+ }
- return null;
+ return null;
}
public XWPFComment[] getComments() {
- return comments.toArray(new XWPFComment[comments.size()]);
+ return comments.toArray(new XWPFComment[comments.size()]);
}
/**
* @param cursor
*/
private boolean isCursorInBody(XmlCursor cursor) {
- XmlCursor verify = cursor.newCursor();
- verify.toParent();
- try {
- return (verify.getObject() == this.ctDocument.getBody());
- } finally {
- verify.dispose();
- }
+ XmlCursor verify = cursor.newCursor();
+ verify.toParent();
+ try {
+ return (verify.getObject() == this.ctDocument.getBody());
+ } finally {
+ verify.dispose();
+ }
}
- private int getPosOfBodyElement(IBodyElement needle) {
- BodyElementType type = needle.getElementType();
- IBodyElement current;
- for(int i=0; i<bodyElements.size(); i++) {
- current = bodyElements.get(i);
- if(current.getElementType() == type) {
- if(current.equals(needle)) {
- return i;
- }
- }
- }
- return -1;
+ private int getPosOfBodyElement(IBodyElement needle) {
+ BodyElementType type = needle.getElementType();
+ IBodyElement current;
+ for(int i=0; i<bodyElements.size(); i++) {
+ current = bodyElements.get(i);
+ if(current.getElementType() == type) {
+ if(current.equals(needle)) {
+ return i;
+ }
+ }
}
+ return -1;
+ }
- /**
- * Get the position of the paragraph, within the list
- * of all the body elements.
- * @param p The paragraph to find
- * @return The location, or -1 if the paragraph couldn't be found
- */
- public int getPosOfParagraph(XWPFParagraph p){
- return getPosOfBodyElement(p);
- }
-
- /**
- * Get the position of the table, within the list of
- * all the body elements.
- * @param t The table to find
- * @return The location, or -1 if the table couldn't be found
- */
- public int getPosOfTable(XWPFTable t){
- return getPosOfBodyElement(t);
- }
+ /**
+ * Get the position of the paragraph, within the list
+ * of all the body elements.
+ * @param p The paragraph to find
+ * @return The location, or -1 if the paragraph couldn't be found
+ */
+ public int getPosOfParagraph(XWPFParagraph p){
+ return getPosOfBodyElement(p);
+ }
+
+ /**
+ * Get the position of the table, within the list of
+ * all the body elements.
+ * @param t The table to find
+ * @return The location, or -1 if the table couldn't be found
+ */
+ public int getPosOfTable(XWPFTable t){
+ return getPosOfBodyElement(t);
+ }
/**
* commit and saves the document
*/
@Override
protected void commit() throws IOException {
-
- XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
- xmlOptions.setSaveSyntheticDocumentElement(new QName(CTDocument1.type.getName().getNamespaceURI(), "document"));
- Map<String, String> map = new HashMap<String, String>();
- map.put("http://schemas.openxmlformats.org/officeDocument/2006/math", "m");
- map.put("urn:schemas-microsoft-com:office:office", "o");
- map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r");
- map.put("urn:schemas-microsoft-com:vml", "v");
- map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve");
- map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w");
- map.put("urn:schemas-microsoft-com:office:word", "w10");
- map.put("http://schemas.microsoft.com/office/word/2006/wordml", "wne");
- map.put("http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", "wp");
- xmlOptions.setSaveSuggestedPrefixes(map);
-
- PackagePart part = getPackagePart();
- OutputStream out = part.getOutputStream();
- ctDocument.save(out, xmlOptions);
- out.close();
+ XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
+ xmlOptions.setSaveSyntheticDocumentElement(new QName(CTDocument1.type.getName().getNamespaceURI(), "document"));
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("http://schemas.openxmlformats.org/officeDocument/2006/math", "m");
+ map.put("urn:schemas-microsoft-com:office:office", "o");
+ map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r");
+ map.put("urn:schemas-microsoft-com:vml", "v");
+ map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve");
+ map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w");
+ map.put("urn:schemas-microsoft-com:office:word", "w10");
+ map.put("http://schemas.microsoft.com/office/word/2006/wordml", "wne");
+ map.put("http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", "wp");
+ xmlOptions.setSaveSuggestedPrefixes(map);
+
+ PackagePart part = getPackagePart();
+ OutputStream out = part.getOutputStream();
+ ctDocument.save(out, xmlOptions);
+ out.close();
}
/**
* @param pos
* @return true if removing was successfully, else return false
*/
- public boolean removeBodyElement(int pos){
- if(pos >= 0 && pos < bodyElements.size()) {
- BodyElementType type = bodyElements.get(pos).getElementType();
- if(type == BodyElementType.TABLE){
- int tablePos = getTablePos(pos);
- tables.remove(tablePos);
- ctDocument.getBody().removeTbl(tablePos);
- }
- if(type == BodyElementType.PARAGRAPH){
- int paraPos = getParagraphPos(pos);
- paragraphs.remove(paraPos);
- ctDocument.getBody().removeP(paraPos);
- }
- bodyElements.remove(pos);
- return true;
- }
- return false;
+ public boolean removeBodyElement(int pos) {
+ if(pos >= 0 && pos < bodyElements.size()) {
+ BodyElementType type = bodyElements.get(pos).getElementType();
+ if(type == BodyElementType.TABLE){
+ int tablePos = getTablePos(pos);
+ tables.remove(tablePos);
+ ctDocument.getBody().removeTbl(tablePos);
+ }
+ if(type == BodyElementType.PARAGRAPH) {
+ int paraPos = getParagraphPos(pos);
+ paragraphs.remove(paraPos);
+ ctDocument.getBody().removeP(paraPos);
+ }
+ bodyElements.remove(pos);
+ return true;
+ }
+ return false;
}
/**
}
- public Iterator<XWPFTable> getTablesIterator() {
- return tables.iterator();
- }
+ public Iterator<XWPFTable> getTablesIterator() {
+ return tables.iterator();
+ }
- public Iterator<XWPFParagraph> getParagraphsIterator() {
- return paragraphs.iterator();
- }
+ public Iterator<XWPFParagraph> getParagraphsIterator() {
+ return paragraphs.iterator();
+ }
- /**
- * Returns the paragraph that of position pos
- * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int)
- */
- public XWPFParagraph getParagraphArray(int pos) {
- if(pos >= 0 && pos < paragraphs.size()){
- return paragraphs.get(pos);
- }
- return null;
+ /**
+ * Returns the paragraph that of position pos
+ * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int)
+ */
+ public XWPFParagraph getParagraphArray(int pos) {
+ if(pos >= 0 && pos < paragraphs.size()){
+ return paragraphs.get(pos);
}
+ return null;
+ }
/**
* returns the Part, to which the body belongs, which you need for adding relationship to other parts
* @see org.apache.poi.xwpf.usermodel.IBody#getPart()
*/
public POIXMLDocumentPart getPart() {
- return this;
+ return this;
}
- /**
- * get the PartType of the body, for example
- * DOCUMENT, HEADER, FOOTER, FOOTNOTE,
+ /**
+ * get the PartType of the body, for example
+ * DOCUMENT, HEADER, FOOTER, FOOTNOTE,
*
- * @see org.apache.poi.xwpf.usermodel.IBody#getPartType()
- */
- public BodyType getPartType() {
- return BodyType.DOCUMENT;
- }
+ * @see org.apache.poi.xwpf.usermodel.IBody#getPartType()
+ */
+ public BodyType getPartType() {
+ return BodyType.DOCUMENT;
+ }
- /**
- * get the TableCell which belongs to the TableCell
- * @param cell
- */
- public XWPFTableCell getTableCell(CTTc cell) {
- XmlCursor cursor = cell.newCursor();
- cursor.toParent();
- XmlObject o = cursor.getObject();
- if(!(o instanceof CTRow)){
- return null;
- }
- CTRow row = (CTRow)o;
- cursor.toParent();
- o = cursor.getObject();
- cursor.dispose();
- if(! (o instanceof CTTbl)){
- return null;
- }
- CTTbl tbl = (CTTbl) o;
- XWPFTable table = getTable(tbl);
- if(table == null){
- return null;
- }
- XWPFTableRow tableRow = table.getRow(row);
- if (tableRow == null) {
- return null;
- }
- return tableRow.getTableCell(cell);
+ /**
+ * get the TableCell which belongs to the TableCell
+ * @param cell
+ */
+ public XWPFTableCell getTableCell(CTTc cell) {
+ XmlCursor cursor = cell.newCursor();
+ cursor.toParent();
+ XmlObject o = cursor.getObject();
+ if(!(o instanceof CTRow)){
+ return null;
+ }
+ CTRow row = (CTRow)o;
+ cursor.toParent();
+ o = cursor.getObject();
+ cursor.dispose();
+ if(! (o instanceof CTTbl)){
+ return null;
+ }
+ CTTbl tbl = (CTTbl) o;
+ XWPFTable table = getTable(tbl);
+ if(table == null){
+ return null;
}
+ XWPFTableRow tableRow = table.getRow(row);
+ if (tableRow == null) {
+ return null;
+ }
+ return tableRow.getTableCell(cell);
+ }
public XWPFDocument getXWPFDocument() {
- return this;
+ return this;
}
-} // end class
+}