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

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

这是一个简单的例子,用b方法实现插入图片!!!
[code="java"]
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();
}
}
}
[/code]
需要使用到jacob.jar以及以上给出的操作word的方法(我将这些方法写在MSWordSrvApi 类中)。
使用jacob需要做一些配置,将jacob-1.15-M4-x86.dll文件放入jdk/bin中。

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

就是在一个word模板中添加图片是吧?
如果是,那么步骤如下(若不是,请补充问题):
1.打开word文件
[code="java"]
/**
* 打开一个已存在的文档
*
* @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!!");
}
[/code]
2.在指定位置插入图片(a.通过在要添加图片的位置设置书签 b.在光标位置插入图片)
a方法
[code="java"]
/
*
* 在指定书签的添加图片
*
* @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);
    }
}

[/code]
b方法
[code="java"]
/**
* 在当前插入点插入图片
*
* @param imagePath
* 图片路径
/
public void insertImage(String imagePath)
{
Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),
"AddPicture", imagePath);
}
[/code]
b方法徐结合光标的移动
[code="java"]/
*
* 把选定的内容或插入点向上移动
*
* @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));
}[/code]

3.关闭word
[code="java"]/**
* 文件保存或另存为
*
* @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;
}[/code]