0 0

用poi修改word模板文件,并且在模板文件里面添加图片.求代码!谢谢5

最后能把插入的图片定位在word的某一个位置

问题补充:能给我发个完整的(能直接运行的)类文件给我吗?谢谢!
2011年10月09日 19:03

2个答案 按时间排序 按投票排序

0 0

采纳的答案

这是一个简单的例子,用b方法实现插入图片!!!

package com.iteye;

import com.jacob.com.ComThread;

public class InsertImage {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ComThread.InitSTA();
		MSWordSrvApi word = null;
		try {
			word = MSWordSrvApi.getMSWordSrvApiInstance(true);
			String docPath = "F:/test/test.doc";
			String imagePath = "F:/test/testImage.png";
			word.openDocument(docPath);
			word.moveDown(5);
			word.insertImage(imagePath);
			word.closeDocument();
			word.closeWord();
			word.closeWord();
		} catch (Exception e) {
			ComThread.Release();
			e.printStackTrace();
		}
	}
}

需要使用到jacob.jar以及以上给出的操作word的方法(我将这些方法写在MSWordSrvApi 类中)。
使用jacob需要做一些配置,将jacob-1.15-M4-x86.dll文件放入jdk/bin中。

还有什么疑问可以问我。可以留下邮箱,我把这个例子给你。

2011年10月10日 12:42
0 0

就是在一个word模板中添加图片是吧?
如果是,那么步骤如下(若不是,请补充问题):
1.打开word文件

/**
	 * 打开一个已存在的文档
	 * 
	 * @param docPath
	 */
	public void openDocument(String docPath)
	{
		doc = Dispatch.call(documents, "Open", docPath).toDispatch();
		selection = Dispatch.get(word, "Selection").toDispatch();
		System.out.println("open a word file!!");
	}

2.在指定位置插入图片(a.通过在要添加图片的位置设置书签   b.在光标位置插入图片)
a方法
/**
	 * 在指定书签的添加图片
	 * 
	 * @param bookMarkKey
	 *            书签名
	 * @param imagePath
	 *            图片路径
	 */
	public void addImageAtBookMark(String bookMarkKey, String imagePath)
	{
		Dispatch activeDocument = word.getProperty("ActiveDocument")
				.toDispatch();
		// 得到文档所有的书签
		Dispatch bookMarks = word.call(activeDocument, "Bookmarks")
				.toDispatch();
		// 获得指定的书签
		boolean bookMarkExist1 = Dispatch
				.call(bookMarks, "Exists", bookMarkKey).toBoolean();
		if (bookMarkExist1 == true)
		{
			System.out.println("已找到书签 " + bookMarkKey);
			Dispatch rangeItem = Dispatch.call(bookMarks, "Item", bookMarkKey)
					.toDispatch();
			Dispatch range = Dispatch.call(rangeItem, "Range").toDispatch();
			// 在书签选中范围内插入图片
			Dispatch.call(Dispatch.get(range, "InLineShapes").toDispatch(),
					"AddPicture", imagePath);

		}
		else
		{
			System.out.println("指定的书签不存在 " + bookMarkKey);
		}
	}

b方法
/**
	 * 在当前插入点插入图片
	 * 
	 * @param imagePath
	 *            图片路径
	 */
	public void insertImage(String imagePath)
	{
		Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),
				"AddPicture", imagePath);
	}

b方法徐结合光标的移动
/**
	 * 把选定的内容或插入点向上移动
	 * 
	 * @param pos
	 *            移动的距离
	 */
	public void moveUp(int pos)
	{
		if (selection == null)
			selection = Dispatch.get(word, "Selection").toDispatch();
		for (int i = 0; i < pos; i++)
			Dispatch.call(selection, "MoveUp");
	}

	/**
	 * 把选定的内容或者插入点向下移动
	 * 
	 * @param pos
	 *            移动的距离
	 */
	public void moveDown(int pos)
	{
		if (selection == null)
			selection = Dispatch.get(word, "Selection").toDispatch();
		for (int i = 0; i < pos; i++)
			Dispatch.call(selection, "MoveDown");
	}

	/**
	 * 把选定的内容或者插入点向左移动
	 * 
	 * @param pos
	 *            移动的距离
	 */
	public void moveLeft(int pos)
	{
		if (selection == null)
			selection = Dispatch.get(word, "Selection").toDispatch();
		for (int i = 0; i < pos; i++)
		{
			Dispatch.call(selection, "MoveLeft");
		}
	}

	/**
	 * 把选定的内容或者插入点向右移动
	 * 
	 * @param pos
	 *            移动的距离
	 */
	public void moveRight(int pos)
	{
		if (selection == null)
			selection = Dispatch.get(word, "Selection").toDispatch();
		for (int i = 0; i < pos; i++)
			Dispatch.call(selection, "MoveRight");
	}

	/**
	 * 把插入点移动到文件首位置
	 * 
	 */
	public void moveStart()
	{
		if (selection == null)
			selection = Dispatch.get(word, "Selection").toDispatch();
		Dispatch.call(selection, "HomeKey", new Variant(6));
	}

	public void moveEnd()
	{
		if (selection == null)
			selection = Dispatch.get(word, "Selection").toDispatch();
		Dispatch.call(selection, "EndKey", new Variant(6));
	}

3.关闭word
 
/**
	 * 文件保存或另存为
	 * 
	 * @param savePath
	 *            保存或另存为路径
	 */
	public void save(String savePath)
	{
		Dispatch.call(
				(Dispatch) Dispatch.call(word, "WordBasic").getDispatch(),
				"FileSaveAs", savePath);
	}

	/**
	 * 关闭当前word文档
	 * 
	 */
	public void closeDocument()
	{
		if (doc != null)
		{
			Dispatch.call(doc, "Save");
			Dispatch.call(doc, "Close", new Variant(saveOnExit));
			doc = null;
			System.out.println("close a word file!!");
		}
	}

	/**
	 * 关闭全部应用
	 * 
	 */
	public void closeWord()
	{

		if (word != null)
		{
			Dispatch.call(word, "Quit", new Variant(false));
			word = null;
		}
		selection = null;
		documents = null;
	}


2011年10月10日 10:59

相关推荐

    java使用poi根据word模板生成word(图片及文字).zip

    本示例聚焦于使用POI库根据Word模板生成带有图片和文字的新Word文档。以下是对这一技术的详细解释: 1. **Apache POI库**:Apache POI是Apache软件基金会的一个开源项目,提供了Java API来操作Microsoft Office格式...

    POI使用word模板文件循环输出行并导出word

    在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档。这个过程在数据分析、报告生成或自动化文档制作等场景中非常有用。 首先,我们需要理解Word文档的...

    Apache poi 根据word模板生成word报表 替换 循环列表 图片

    在本项目中,我们将关注如何使用Apache POI来根据预设的Word模板生成包含替换内容、循环列表和图片的动态Word报表。 首先,我们需要理解Apache POI的核心概念。在处理Word文档时,POI提供了HWPF(Horrible Word ...

    poi操作word模板

    在提供的`poidemo`压缩包中,可能包含了示例代码或者一个简单的模板文件,用于演示如何使用Apache POI来填充Word模板。通过查看这个示例,你可以更深入地了解实际的编程实践。 总之,Apache POI使Java开发者能够...

    使用java Apache poi 根据word模板生成word报表例子

    使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持。 使用说明:https://blog.csdn.net/u012775558/article/details/79678701

    Java Poi流根据Word模板插入相应的文本、表格和图片,并生成新的Word报告。

    在这个场景中,我们关注的是如何利用Java POI库通过Word模板生成包含特定文本、表格和图片的报告。 首先,我们需要了解Java POI中的XWPFDocument类,它是用来处理.docx文件的。XWPFDocument可以读取、修改和创建...

    Java Poi流 根据Word模板插入相应的文本、表格和图片,生成新的Word报告

    在本主题中,我们将深入探讨如何使用Java POI流处理Word模板,插入文本、表格和图片,以及生成新的Word报告。 1. **Java POI流处理Word模板**: - POI API提供了`XWPFDocument`类来处理`.docx`文件,这是Word 2007...

    java使用poi操作.doc word模板替换,循环插入表格

    在Word模板替换中,我们可以使用XWPFDocument类来打开一个现有的.docx文件,然后遍历文档中的所有文本元素,例如XWPFParagraph和XWPFRun,查找需要替换的占位符。一旦找到,我们就可以用新的内容替换它们。例如,你...

    POI替换word模板中的关键字

    Apache POI是一个强大的Java库,专门用于处理...以上就是使用Apache POI在Java中替换Word模板关键字和动态追加表格的知识点。通过熟练掌握这些技术,你可以构建出强大的文档自动化处理工具,满足各种业务需求。

    java Apache poi word模板 表格模板 word报表.zip

    在Java中,使用Apache POI处理Word模板主要涉及`XWPFDocument`类,它是用来处理.docx文件的。开发者可以创建或加载已有的Word模板文件,然后通过替换占位符、插入文本、图片、表格等元素来生成定制化的报表。 3. *...

    FreeMarker+poi 模板生成word+导入图片

    结合FreeMarker和Apache POI,我们可以创建一个模板Word文档,其中包含占位符,然后使用POI读取和填充这个模板,同时插入图片,生成最终的动态Word文档。以下是这个过程的大致步骤: 1. **创建模板**: 使用...

    使用poi替换word中的图片

    在IT领域,Apache POI是一个广泛使用的开源库,主要用于处理Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。本篇将深入探讨如何使用Apache POI库来替换Word...

    利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码。解决模板读取异常问题,提供wordUtils工具类(各种功能实现)

    利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码。解决模板读取异常问题,提供wordUtils工具类(各种功能实现)

    java POI-lib,word中写入图片

    1. **读取图片**: 使用`FileInputStream`打开图片文件,然后用`POIXMLDocumentPart`的静态方法`newPackagePart`创建一个新的图片部分。 2. **添加图片数据**: 将图片数据添加到Word文档的包中,通过调用`...

    springboot实现根据指定pdf、word模板文件填充值到文件里面,生成对应的文件

    在Spring Boot中,我们可以创建一个服务,该服务接受Word模板文件和数据,然后使用POI API将数据填入模板中的占位符,最后生成一个新的Word文档。 对于PDF文件的处理,我们可以使用iText库。iText是一个强大的PDF...

    Java利用poi对word插入文字图片

    在提供的"poi_word_demo"压缩包中,你应该能找到一个运行示例,它包含了完整的代码、所需的依赖库(jar包)以及测试用的输入输出文件。通过研究这个项目,你可以学习到如何将这些概念应用到实际开发中。此外,记得...

    poi3.15,word模板以及代码

    "有main函数测试类"意味着提供了一个可以直接运行的Java程序,通过main方法执行测试,展示如何使用POI操作Word模板。这对于初学者来说是非常有价值的,因为可以直接运行并理解代码的工作原理。 "保管好用"提示了这...

    poi读写word模板/JAVA生成word包

    关于压缩包中的"poi读写word模板包",可能包含了一些示例代码或模板文件,帮助开发者理解如何使用Apache POI进行Word模板的读写。解压后,你可以查看这些文件来学习具体实现,包括如何查找和替换模板中的特定字符串...

    poi导入word和图片

    ### POI导入Word文档与图片的关键技术点 #### 一、概述 Apache POI 是一个用于读写 Microsoft Office 格式文件(如 .doc、.xls 和 .ppt)的 Java API。本文档将详细介绍如何使用 POI 库来读取 Word 文档(包括 ....

Global site tag (gtag.js) - Google Analytics