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

发布于 2021-11-26 02:16:30 字数 98 浏览 787 评论 2

最近使用POI操作Excel和Word的文档,都是07版的,使用XWPF替换普通段落里面的文字能搞定,可是有一个文本框,不知道怎么处理。有没有大牛知道如何替换文本框中的文字(docx),万分感谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海之角 2021-11-26 05:52:35

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

睫毛上残留的泪 2021-11-26 04:42:48

好吧,做出来了

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();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文