POI如何修改文本框中的文字

六楼的雨 发布于 2014/03/20 21:03
阅读 2K+
收藏 0
POI
最近使用POI操作Excel和Word的文档,都是07版的,使用XWPF替换普通段落里面的文字能搞定,可是有一个文本框,不知道怎么处理。有没有大牛知道如何替换文本框中的文字(docx),万分感谢。
加载中
0
六楼的雨
六楼的雨

好吧,做出来了

FileInputStream fis = new FileInputStream("e:/file.docx");
		XWPFDocument doc = new XWPFDocument(fis);
		//XWPFParagraph可以通过迭代处理,我这里已经测试过了,所以后边直接使用paragraphList.get(10)
		List<XWPFParagraph> paragraphList = doc.getParagraphs();
		
		// 文本框中的內容很麻煩
		// 第一步,通过XWPF的XWPFDocument->XWPFParagraph获取XWPFParagraph对象
		XWPFParagraph paragraph = paragraphList.get(10);
		// 第二部,获取XWPFParagraph的XmlObject,然后使用XmlObject对象,new一个XmlCursor
		XmlObject object = paragraph.getCTP().getRArray(1);
		XmlCursor cursor = object.newCursor();
		
		// 可以打印XmlObject对象来查看当前xml文件内容
		// 也可通过XmlCursor的getName和getTextValue方法查看当前所在Node及其值
		// 我的第一个要修改的内容所在node为:注意index
		// <xml-fragment> -> <w:pict> -> <v:shape> -> <v:textbox> ->
		// <w:txbxContent> -> <w:p> -> <w:r> -> <w:t>
		cursor.toChild(1);
		cursor.toChild(0);
		cursor.toChild(3);
		cursor.toChild(0);
		
		cursor.toChild(0);
		cursor.toChild(3);
		cursor.toChild(1);
		cursor.setTextValue("First");
		
		// 我的第二个要修改的内容所在node为:注意index
		// <w:txbxContent> -> <w:p> -> <w:r> -> <w:t>
		cursor.toParent();
		cursor.toParent();
		cursor.toParent();
		cursor.toChild(1);
		cursor.toChild(3);
		cursor.toChild(1);
		cursor.setTextValue("Second");
		FileOutputStream fos = new FileOutputStream("e:/export.docx");
		doc.write(fos);
		fos.flush();
		fos.close();
		fis.close();



S
SuperBac
word文档中如果有很多个文本框的模版,每次都要移动多次游标会很麻烦,还有更加便捷的方法吗?
返回顶部
顶部