-
用poi修改word模板文件,并且在模板文件里面添加图片.求代码!谢谢5
最后能把插入的图片定位在word的某一个位置
问题补充:能给我发个完整的(能直接运行的)类文件给我吗?谢谢!2011年10月09日 19:03
2个答案 按时间排序 按投票排序
-
采纳的答案
这是一个简单的例子,用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
-
就是在一个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
相关推荐
本示例聚焦于使用POI库根据Word模板生成带有图片和文字的新Word文档。以下是对这一技术的详细解释: 1. **Apache POI库**:Apache POI是Apache软件基金会的一个开源项目,提供了Java API来操作Microsoft Office格式...
在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档。这个过程在数据分析、报告生成或自动化文档制作等场景中非常有用。 首先,我们需要理解Word文档的...
在本项目中,我们将关注如何使用Apache POI来根据预设的Word模板生成包含替换内容、循环列表和图片的动态Word报表。 首先,我们需要理解Apache POI的核心概念。在处理Word文档时,POI提供了HWPF(Horrible Word ...
在提供的`poidemo`压缩包中,可能包含了示例代码或者一个简单的模板文件,用于演示如何使用Apache POI来填充Word模板。通过查看这个示例,你可以更深入地了解实际的编程实践。 总之,Apache POI使Java开发者能够...
使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持。 使用说明:https://blog.csdn.net/u012775558/article/details/79678701
在这个场景中,我们关注的是如何利用Java POI库通过Word模板生成包含特定文本、表格和图片的报告。 首先,我们需要了解Java POI中的XWPFDocument类,它是用来处理.docx文件的。XWPFDocument可以读取、修改和创建...
在本主题中,我们将深入探讨如何使用Java POI流处理Word模板,插入文本、表格和图片,以及生成新的Word报告。 1. **Java POI流处理Word模板**: - POI API提供了`XWPFDocument`类来处理`.docx`文件,这是Word 2007...
在Word模板替换中,我们可以使用XWPFDocument类来打开一个现有的.docx文件,然后遍历文档中的所有文本元素,例如XWPFParagraph和XWPFRun,查找需要替换的占位符。一旦找到,我们就可以用新的内容替换它们。例如,你...
Apache POI是一个强大的Java库,专门用于处理...以上就是使用Apache POI在Java中替换Word模板关键字和动态追加表格的知识点。通过熟练掌握这些技术,你可以构建出强大的文档自动化处理工具,满足各种业务需求。
在Java中,使用Apache POI处理Word模板主要涉及`XWPFDocument`类,它是用来处理.docx文件的。开发者可以创建或加载已有的Word模板文件,然后通过替换占位符、插入文本、图片、表格等元素来生成定制化的报表。 3. *...
结合FreeMarker和Apache POI,我们可以创建一个模板Word文档,其中包含占位符,然后使用POI读取和填充这个模板,同时插入图片,生成最终的动态Word文档。以下是这个过程的大致步骤: 1. **创建模板**: 使用...
在IT领域,Apache POI是一个广泛使用的开源库,主要用于处理Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。本篇将深入探讨如何使用Apache POI库来替换Word...
利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码。解决模板读取异常问题,提供wordUtils工具类(各种功能实现)
1. **读取图片**: 使用`FileInputStream`打开图片文件,然后用`POIXMLDocumentPart`的静态方法`newPackagePart`创建一个新的图片部分。 2. **添加图片数据**: 将图片数据添加到Word文档的包中,通过调用`...
在Spring Boot中,我们可以创建一个服务,该服务接受Word模板文件和数据,然后使用POI API将数据填入模板中的占位符,最后生成一个新的Word文档。 对于PDF文件的处理,我们可以使用iText库。iText是一个强大的PDF...
在提供的"poi_word_demo"压缩包中,你应该能找到一个运行示例,它包含了完整的代码、所需的依赖库(jar包)以及测试用的输入输出文件。通过研究这个项目,你可以学习到如何将这些概念应用到实际开发中。此外,记得...
"有main函数测试类"意味着提供了一个可以直接运行的Java程序,通过main方法执行测试,展示如何使用POI操作Word模板。这对于初学者来说是非常有价值的,因为可以直接运行并理解代码的工作原理。 "保管好用"提示了这...
关于压缩包中的"poi读写word模板包",可能包含了一些示例代码或模板文件,帮助开发者理解如何使用Apache POI进行Word模板的读写。解压后,你可以查看这些文件来学习具体实现,包括如何查找和替换模板中的特定字符串...
### POI导入Word文档与图片的关键技术点 #### 一、概述 Apache POI 是一个用于读写 Microsoft Office 格式文件(如 .doc、.xls 和 .ppt)的 Java API。本文档将详细介绍如何使用 POI 库来读取 Word 文档(包括 ....