`
53873039oycg
  • 浏览: 843710 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

[简单]poi读取word 2007简单文本框值

    博客分类:
  • poi
 
阅读更多

       

import java.io.FileOutputStream;
import java.util.Formatter;
import java.util.List;

import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;

public class POI_读取指定文本框值_S3_Test {
	public static void main(String[] args) throws Exception {
		POI_读取指定文本框值_S3_Test t = new POI_读取指定文本框值_S3_Test();
		String filePath="f:/saveFile/temp/文本框0003.docx";
		t.readTextBoxContentUseXPath(filePath);
		t.readTextBoxContentUseCursor(filePath);
	}

	public void readTextBoxContentUseXPath(String filePath) throws Exception {
		XWPFDocument xdoc = openDocument(filePath);
		List<XWPFParagraph> paragraphList = xdoc.getParagraphs();
		// 取第一段
		XWPFParagraph paragrap = paragraphList.get(0);
		// 文本框位于第一个<w:r></w:r>内
		XmlObject object = paragrap.getCTP().getRArray(0);
		//System.out.println(object);
		XmlCursor selectPathCursor = getXmlObjectByXPath(
				object,
				"declare namespace ve='http://schemas.openxmlformats.org/markup-compatibility/2006'; declare namespace o='urn:schemas-microsoft-com:office:office'; declare namespace r='http://schemas.openxmlformats.org/officeDocument/2006/relationships'; declare namespace m='http://schemas.openxmlformats.org/officeDocument/2006/math'; declare namespace v='urn:schemas-microsoft-com:vml'; declare namespace wp='http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing'; declare namespace w10='urn:schemas-microsoft-com:office:word'; declare namespace w='http://schemas.openxmlformats.org/wordprocessingml/2006/main'; declare namespace wne='http://schemas.microsoft.com/office/word/2006/wordml';",
				"$this/w:pict/v:shape/v:textbox/w:txbxContent/w:p");
		selectPathCursor.push();//保存当前位置
		selectPathCursor
				.selectPath("declare namespace ve='http://schemas.openxmlformats.org/markup-compatibility/2006'; declare namespace o='urn:schemas-microsoft-com:office:office'; declare namespace r='http://schemas.openxmlformats.org/officeDocument/2006/relationships'; declare namespace m='http://schemas.openxmlformats.org/officeDocument/2006/math'; declare namespace v='urn:schemas-microsoft-com:vml'; declare namespace wp='http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing'; declare namespace w10='urn:schemas-microsoft-com:office:word'; declare namespace w='http://schemas.openxmlformats.org/wordprocessingml/2006/main'; declare namespace wne='http://schemas.microsoft.com/office/word/2006/wordml';"
						+ "$this/w:r/w:t");
		while (selectPathCursor.toNextSelection()) {
			System.out.println("文本框原来内容=" + selectPathCursor.getTextValue());
			selectPathCursor.setTextValue("修改");
		}
		selectPathCursor.pop();//恢复上次位置
		selectPathCursor.toParent();//w:txbxContent
		selectPathCursor.toChild(1);//w:p[1]
		selectPathCursor
				.selectPath("declare namespace ve='http://schemas.openxmlformats.org/markup-compatibility/2006'; declare namespace o='urn:schemas-microsoft-com:office:office'; declare namespace r='http://schemas.openxmlformats.org/officeDocument/2006/relationships'; declare namespace m='http://schemas.openxmlformats.org/officeDocument/2006/math'; declare namespace v='urn:schemas-microsoft-com:vml'; declare namespace wp='http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing'; declare namespace w10='urn:schemas-microsoft-com:office:word'; declare namespace w='http://schemas.openxmlformats.org/wordprocessingml/2006/main'; declare namespace wne='http://schemas.microsoft.com/office/word/2006/wordml';"
						+ "$this/w:r/w:t");
		while (selectPathCursor.toNextSelection()) {
			System.out.println("文本框原来内容2=" + selectPathCursor.getTextValue());
			selectPathCursor.setTextValue("修_改");
		}
		selectPathCursor.dispose();
		saveDocument(xdoc, "f:/saveFile/temp/sys_" + System.currentTimeMillis()
				+ ".docx");
	}

	public XmlCursor getXmlObjectByXPath(XmlObject xml, String nameSpace,
			String xpath) {
		// Create a temporary cursor for the XPath passed in
		XmlCursor xpathCursor = xml.newCursor();
		// Create a formatter to format the XPath
		StringBuilder builder = new StringBuilder();
		Formatter formatter = new Formatter(builder);
		formatter.format("%s %s", nameSpace, xpath);
		// Select the XPath
		xpathCursor.selectPath(formatter.toString());
		xpathCursor.toNextSelection();
		formatter.close();
		return xpathCursor;
	}

	public void readTextBoxContentUseCursor(String filePath) throws Exception {
		XWPFDocument xdoc = openDocument(filePath);
		List<XWPFParagraph> paragraphList = xdoc.getParagraphs();
		// 取第一段
		XWPFParagraph paragrap = paragraphList.get(0);
		// 文本框位于第一个<w:r></w:r>内
		XmlObject object = paragrap.getCTP().getRArray(0);
		//参考https://www.ibm.com/developerworks/cn/xml/x-beans1/  高级特性部分
		//System.out.println(object);
		XmlCursor cursor = object.newCursor();
		cursor.toChild(1);// <xml-fragment> --> <w:pict>
		cursor.toChild(1);// <w:pict> --> <v:shape>
		cursor.toChild(0);// <v:shape> --> <v:textbox>
		cursor.toChild(0);// <v:textbox> --><w:txbxContent>

		cursor.toChild(0);// <w:txbxContent> --> <w:p>
		cursor.toChild(1);// <w:p> --> <w:r>
		cursor.toChild(1);// <w:r> --> <w:t>
		System.out.println("文本框原来值:"+cursor.getTextValue());
		cursor.setTextValue("修改后");

		// 回到<w:txbxContent>位置
		cursor.toParent();// <w:t>--><w:r>
		cursor.toParent();// <w:r>--><w:p>
		cursor.toParent();// <w:p>--><w:txbxContent>
		cursor.toChild(1);// <w:txbxContent>--><w:p>
		cursor.toChild(1);// <w:p> --> <w:r>
		cursor.toChild(1);// <w:r> --> <w:t>
		System.out.println("文本框原来值:"+cursor.getTextValue());
		cursor.setTextValue("修改后");
		// 回到<w:p>位置
		cursor.toParent();// <w:t>--><w:r>
		cursor.toParent();// <w:r>--><w:p>
		cursor.toChild(2);// <w:p>--><w:r>
		cursor.toChild(1);// <w:r> --> <w:t>
		System.out.println("文本框原来值:"+cursor.getTextValue());
		cursor.setTextValue("4");
		cursor.dispose();
		saveDocument(xdoc, "f:/saveFile/temp/sys_" + System.currentTimeMillis()
				+ ".docx");
	}

	public void saveDocument(XWPFDocument document, String savePath)
			throws Exception {
		FileOutputStream fos = new FileOutputStream(savePath);
		document.write(fos);
		fos.close();
	}

	public XWPFDocument openDocument(String filePath) throws Exception {
		XWPFDocument xdoc = new XWPFDocument(
				POIXMLDocument.openPackage(filePath));
		return xdoc;
	}

}

 

    全文完.

分享到:
评论

相关推荐

    java使用poi读取ppt文件和poi读取excel、word示例

    上述示例展示了如何使用POI读取Word文档的内容,通过`WordExtractor`可以方便地获取整个文档的文本,或者通过`HWPFDocument`和`Range`对象深入到文档的各个部分,如章节(Section)、段落(Paragraph)和字符运行...

    poi3.15,word模板以及代码

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Word(.doc、.docx)、Excel(.xls、.xlsx)等。在标题提到的"poi3.15"中,指的是Apache POI项目的3.15版本。这个版本允许开发者通过Java编程语言...

    POI 操作word

    以下是一个简单的示例,演示如何使用 HWPFDocument 类来读取并修改一个 Word 文档: ```java import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.Range; // 加载文档 HWPFDocument ...

    poi-tl引擎实现world模板内容替换(支持docx)

    1. 加载Word模板文件:使用poi-tl提供的API读取.docx文件。 2. 创建DataModel:根据业务需求,创建一个数据模型,包含需要替换到模板中的数据。 3. 替换模板内容:调用poi-tl的`DocumentEngine`或`TemplateEngine`,...

    POI操作jar包

    通过上述知识点,你可以使用Java的Apache POI库高效地处理Excel、Word和PowerPoint文件,无论是读取现有文件,还是创建新的文档,都能游刃有余。记得在实际开发中结合具体需求,灵活运用这些技术。

    java poi操作word模版文件生成表单和修改

    1. **创建和读取Word文档** - 使用Apache POI的`XWPFDocument`类可以创建和加载.docx格式的Word文档。首先,我们需要创建一个`XWPFDocument`实例,然后通过`XWPFParagraph`和`XWPFRun`对象添加文本、样式等元素。 ...

    poi操作ppt完整示例程序

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在本示例程序中,我们关注的是如何使用Java和Apache POI库来操作PowerPoint(PPT)文件。POI 提供了丰富的API,...

    POI poi相关所有jar包 poi jar包 poi最全jar包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel(.xlsx、.xls)、Word(.doc、.docx)和PowerPoint(.ppt、.pptx)。这个压缩包包含了POI项目中所有必要的jar包,总计十二个,确保了...

    poi读写office文件样例程序

    4. **读取Word文件** 对于Word文档,POI提供了HWPFDocument类来读取旧版本的.doc文件,而XWPFDocument则用于处理新版本的.docx文件。开发者可以读取段落、表格、图片等元素,并进行操作。 5. **写入Word文件** ...

    poi3.14jar包

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。这个"poi3.14jar包"是Apache POI的3.14版本,是一个Java库,允许开发者在Java应用程序中创建、读取和修改Microsoft ...

    java-POI相关jar包

    - 读取Word文档内容,提取所需信息。 3. PowerPoint处理: - 创建新的PPT演示文稿,插入幻灯片、文本框、图片等元素。 - 编辑现有PPT,如修改内容、设置动画效果等。 - 读取PPT文件,进行内容提取或转换。 在...

    poi3.9及测试程序

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Word(.doc, .docx)、Excel(.xls, .xlsx)和PowerPoint(.ppt, .pptx)。在你提到的"poi3.9及测试程序"中,POI 3.9 版本是一个较旧但仍然广泛...

    apache 的 POI.jar包

    - **读取内容**: POI允许读取Word文档的文本、样式、页眉、页脚和注释等信息。 3. **PowerPoint处理**: - **HSLF and XSLF**: 这两个API分别用于处理老版PPT和OpenXML格式的PPT。 - **创建演示文稿**: 开发者...

    poi 所有jar包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word(.doc、.docx)、Excel(.xls、.xlsx)和PowerPoint(.ppt、.pptx)。这个压缩包“poi所有jar包”包含了处理这些文件所需的各种Apache ...

    poi 3.17 jar包

    - **读写Word和PowerPoint**: 虽然不如Excel那样广泛使用,但POI也提供了处理Word文档(段落、表格、图片等)和PowerPoint演示文稿(幻灯片、形状、文本框)的功能。 在使用Apache POI时,需要注意的是,由于处理...

    JAVA读取WORD-pdf等.docx

    1. **读取Word文档** - 使用 Apache POI 库中的 `HWPFDocument` 类可以处理 `.doc` 文件,而 `XWPFDocument` 类则用于 `.docx` 文件。例如,你可以通过 `WordExtractor` 来提取文档中的文本内容。 ```java import...

    Android读取PPT、pptx文档

    使用POI读取PPT/PPTX文档的基本步骤如下: 1. **添加依赖**:将精简版POI库添加到项目的build.gradle文件中,然后同步构建,确保库已成功导入。 2. **创建输入流**:获取到PPT或PPTX文件的InputStream。这可以通过...

    poi3.1.7完整jar包

    2. **Word处理**: 对于Word文档,POI允许开发者创建新的文档、段落、表格、图片等,并且可以读取和更新现有文档的内容和样式。 3. **PowerPoint处理**: 对PowerPoint的支持包括创建、编辑幻灯片、文本框、图片、...

    poi-4.1.1.rar

    这个"poi-4.1.1.rar"压缩包包含的是Apache POI库的4.1.1版本,它是Java开发者用来在程序中读取、写入和操作Office文档的重要工具。 Apache POI 提供了丰富的API,使得Java程序员可以方便地与Excel文件进行交互。...

Global site tag (gtag.js) - Google Analytics