当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

[简单]poi删除word 2007书签

发表于: 2015-03-08   作者:53873039oycg   来源:转载   浏览:
摘要:       见代码:       //删除所有的书签 public void removeAllDocBookMark(XWPFDocument xdoc) { List<XWPFParagraph> paraList = xdoc.getParagraphs();

      见代码:

     

//删除所有的书签
	public void removeAllDocBookMark(XWPFDocument xdoc) {
		List<XWPFParagraph> paraList = xdoc.getParagraphs();
		removeParaListBookMark(paraList);
		List<XWPFTable> tableList = xdoc.getTables();
		if (tableList != null) {
			for (XWPFTable table : tableList) {
				List<XWPFTableRow> rowList = table.getRows();
				if (rowList != null) {
					for (XWPFTableRow row : rowList) {
						List<XWPFTableCell> cellList = row.getTableCells();
						if (cellList != null) {
							for (XWPFTableCell cell : cellList) {
								removeParaListBookMark(cell.getParagraphs());
							}
						}
					}
				}
			}
		}
	}

	public void removeParaListBookMark(List<XWPFParagraph> paraList) {
		if (paraList != null) {
			for (XWPFParagraph para : paraList) {
				removeParagraphBookMark(para);
			}
		}
	}

	////删除段落内所有的书签 去掉w:bookmarkStart/w:bookmarkEnd
	public void removeParagraphBookMark(XWPFParagraph para) {
		List<CTBookmark> bookmarkStartList = para.getCTP()
				.getBookmarkStartList();
		if (bookmarkStartList == null) {
			return;
		}
		for (int i = bookmarkStartList.size() - 1; i >= 0; i--) {
			Node bookStartNode = bookmarkStartList.get(i).getDomNode();
			printNodeAllAttributeValue(bookStartNode);
			bookStartNode.getParentNode().removeChild(bookStartNode);
		}
		List<CTMarkupRange> bookmarkEndList = para.getCTP()
				.getBookmarkEndList();
		if (bookmarkEndList == null) {
			return;
		}
		for (int i = bookmarkEndList.size() - 1; i >= 0; i--) {
			Node bookEndNode = bookmarkEndList.get(i).getDomNode();
			printNodeAllAttributeValue(bookEndNode);
			bookEndNode.getParentNode().removeChild(bookEndNode);
		}

	}

	public void printNodeAllAttributeValue(Node node) {
		NamedNodeMap nodeAttr = node.getAttributes();
		if (nodeAttr != null) {
			int numAttrs = nodeAttr.getLength();
			for (int i = 0; i < numAttrs; i++) {
				Attr attr = (Attr) nodeAttr.item(i);
				String attrName = attr.getNodeName();
				String attrValue = attr.getNodeValue();
				System.out.println(node.getNodeName() + " 属性="
						+ attrName + " 值= " + attrValue);
			}
		}
	}

    全文完。

 

[简单]poi删除word 2007书签

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.Reader; import
word 2007 Wingdings字符操作步骤如下图: 代码很简单: import java.io.FileOutputStream; import ja
应博友要求写下这个例子,office word 2007测试通过,见代码: import java.io.FileOutputStream; im
直接上代码: import java.io.FileOutputStream; import java.math.BigInteger; import java.util.Ar
直接上代码: import java.io.FileOutputStream; import java.math.BigInteger; import java.util.R
使用已有的word 2007模版导出,常用的方法一般以下几种: (一)解压word模版后替换变量再压缩为word导
首先poi中XWPFTable.addNewRowBetween(start, end);是不能实现插入行功能的,poi3.11版本未实现该功
本文非原创,只是整理了下代码,原代码出自:http://blog.chiefleo.me/archives/429.原文如下: 普通
以前使用poi操作word 2007时候会遇到设置页面大小等问题,当时发现1cm≈567,为什么要这样一直不清楚
直接上代码: import java.io.File; import java.math.BigInteger; import java.util.Calendar; impo
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号