Jacob1.11版本下载地址:
下载完以后,解压缩出来,把里面的jacob.jar添加到classpath中
把jacob.dll放入windows/system32下面
添加到系统环境变量中:右键我的电脑->属性->高级->系统变量
类一:WordService.java
import com.jacob.activeX.*;
import com.jacob.com.*;
/**
* 采用Jacob1.11操作Word
*
* @author liuxt
*
*/
public class WordService extends java.awt.Panel {
private static final long serialVersionUID=-1L;
public ActiveXComponent MsWordApp = null;
private Dispatch document = null;
public WordService() {
super();
}
public void openWord(boolean makeVisible) {
//Open Word if we\'ve not done it already
if (MsWordApp == null) {
MsWordApp = new ActiveXComponent("Word.Application");
}
//Set the visible property as required.
Dispatch.put(MsWordApp, "Visible",
new Variant(makeVisible));
}
/**
* 打开已知的word文档
* @param markVisible 可视化状态
* @param docPath 文档路径
*/
public void openWord(boolean markVisible,final String docPath) {
if (MsWordApp == null) {
MsWordApp = new ActiveXComponent("Word.Application");
}
//Set the visible property as required.
Dispatch.put(MsWordApp, "Visible", new Variant(markVisible));
Dispatch docs = MsWordApp.getProperty("Documents").toDispatch();
document = Dispatch.invoke(docs,"Open", Dispatch.Method, new Object[]{docPath}, new int[1]).toDispatch();
}
/**
* 创建Word文档
*
*/
public void createNewDocument() {
//Find the Documents collection object maintained by Word
Dispatch documents = Dispatch.get(MsWordApp,"Documents").toDispatch();
//Call the Add method of the Documents collection to create
//a new document to edit
document = Dispatch.call(documents,"Add").toDispatch();
}
/**
* 插入文本
* @param textToInsert
*/
public void insertText(String textToInsert) {
// Get the current selection within Word at the moment. If
// a new document has just been created then this will be at
// the top of the new doc
Dispatch selection = Dispatch.get(MsWordApp,"Selection").toDispatch();
//Put the specified text at the insertion point
Dispatch.put(selection,"Text",textToInsert);
}
public void saveFileAs(String filename) {
Dispatch.call(document,"SaveAs",filename);
}
public void printFile() {
//Just print the current document to the default printer
Dispatch.call(document,"PrintOut");
}
/**
* 查找替换文本
* @param searchText 需要查找的关键字
* @param replaceText 要替换成的关键字
*/
public void searchReplace(final String searchText,final String replaceText) {
Dispatch selection=MsWordApp.getProperty("Selection").toDispatch();
Dispatch find = ActiveXComponent.call(selection, "Find").toDispatch();
//查找什么文本
Dispatch.put(find, "Text", searchText);
//替换文本
Dispatch.call(find,"ClearFormatting");
Dispatch.put(find, "Text", searchText);
Dispatch.call(find, "Execute");
Dispatch.put(selection, "Text", replaceText);
}
/**
* 把指定的值设置到指定的标签中去
* @param bookMarkKey
*/
public void setBookMark(final String bookMarkKey,final String bookMarkValue) {
Dispatch activeDocument=MsWordApp.getProperty("ActiveDocument").toDispatch();
Dispatch bookMarks = ActiveXComponent.call(activeDocument, "Bookmarks").toDispatch();
boolean bookMarkExist1=Dispatch.call(bookMarks,"Exists",bookMarkKey).getBoolean();
if(bookMarkExist1==true){
Dispatch rangeItem = Dispatch.call(bookMarks, "Item",bookMarkKey).toDispatch();
Dispatch range = Dispatch.call(rangeItem, "Range").toDispatch();
//取标签的值
//String bookMarkValue=Dispatch.get(range,"Text").toString();
//bookMarkValue="test";
if(bookMarkValue!=null){
Dispatch.put(range, "Text",new Variant(bookMarkValue));
}
}else{
System.out.println("not exists bookmark!");
}
}
/**
* 保存Word文档到指定的目录(包括文件名)
* @param filePath
*/
public void saveWordFile(final String filePath) {
//保存文件
Dispatch.invoke(document, "SaveAs", Dispatch.Method, new Object[] {filePath, new Variant(0)} , new int[1]);
//作为word格式保存到目标文件
Variant f = new Variant(false);
Dispatch.call(document, "Close", f);
}
public void closeDocument() {
// Close the document without saving changes
// 0 = wdDoNotSaveChanges
// -1 = wdSaveChanges
// -2 = wdPromptToSaveChanges
Dispatch.call(document, "Close", new Variant(0));
document = null;
}
public void closeWord() {
Dispatch.call(MsWordApp,"Quit");
MsWordApp = null;
document = null;
}
}
类二:WordExample.java
import com.suypower.yxsj.common.WordService;
public class WordExample {
public static void main(String[] args) {
WordService word=new WordService();
word.openWord(true);
word.createNewDocument();
word.insertText("Hello word.");
word.searchReplace("Hello", "哈喽");
word.setBookMark("bookMarkKey","bookMarkValue");
//word.MsWordApp.setProperty("UserName","xiantongsky");
//word.saveWordFile("D:/xiantong.doc");
}
}
相关推荐
在具体使用Jacob时,我们需要注意以下几点: - **环境配置**:Jacob需要在Windows环境下运行,因为它依赖于COM组件。安装好Jacob的jar包后,还需要将对应的dll文件(如本压缩包中的jacob.dll)加入到系统的PATH环境...
使用这些库时,需要注意以下几点: - 对于大型Excel文件,POI可能会消耗大量内存,因此需要合理使用流式处理或者SXSSF(内存效率更高的API)来优化性能。 - Jacob只能在Windows环境下运行,因为它依赖于Windows的COM...
在开发过程中,需要注意以下几点: - **系统配置**:确保安装了与Jacob.dll版本匹配的Java JRE,并正确配置了系统路径,以便Java能够找到Jacob.dll。 - **错误处理**:由于COM调用可能抛出异常,因此需要适当处理...
Jacob非常适合那些需要在Java环境中操作Office文档(如Word、Excel)的应用场景。 #### 二、Jacob操作Excel基本流程 使用Jacob操作Excel主要包括以下几个步骤: 1. **初始化Excel对象**:创建Excel应用程序实例。...
使用Jacob 1.9.1时,开发者需要注意以下几点: - **平台兼容性**:尽管Jacob通过JNI实现了与COM的交互,但它并不完全跨平台。主要支持Windows环境,因为COM主要是微软操作系统上的技术。 - **依赖库**:Jacob需要...
使用Jacob时,需要注意几点: - Jacob需要在Windows环境下运行,因为它依赖于Windows的COM组件。 - 由于Jacob是本地库,所以Java项目需要包含对应的dll文件,这可能涉及到32位和64位版本的兼容问题。 - 需要确保安装...
在实际开发中,需要注意以下几点: 1. **性能优化**:由于处理Office文档通常涉及大量IO操作,因此需要关注性能优化,比如使用流式处理或分块读写,避免一次性加载整个文件到内存。 2. **异常处理**:处理Office...
6. **使用步骤**:在Java中使用Jacob打印Word文档,一般需要以下步骤: - 引入Jacob的jar文件(如`jacob.jar`)到项目类路径。 - 如果是64位系统,还需要将`jacob-1.17-M2-x64.dll`放到系统PATH环境变量所包含的...
在实际开发中,需要注意以下几点: - 配置环境:确保系统中安装了对应版本的Microsoft Office,并且Java运行时环境(JRE)和Jacob库版本匹配,否则可能会出现兼容性问题。 - 错误处理:由于COM接口的调用可能会抛出...
在这个"Office编程 jacob"的主题中,我们主要探讨以下几个关键知识点: 1. **Jacob库介绍**:Jacob库是一个开源项目,它提供了在Java中调用COM组件的API。它的核心功能是将Java对象映射到COM对象,反之亦然,这样就...
使用Jacob时,开发者需要注意以下几点: - **系统要求**:由于Jacob依赖于Windows的COM接口,因此它只能在Windows环境下运行。如果你在非Windows系统上开发,你需要考虑其他解决方案,如Apache POI或OpenOffice API...
使用Jacob时,需要注意以下几点: - 确保目标系统安装了相应的COM组件,如Office套件。 - 由于Jacob依赖于本地的COM组件,所以它是平台相关的,不适用于所有操作系统。 - 在多线程环境中使用Jacob需要额外小心,因为...
在实际应用中,使用Jacob库时,开发者需要确保以下几点: 1. 确保你的Java环境和Windows系统匹配。如果是64位Java,需要64位的dll;如果是32位Java,需要32位的dll。 2. 配置Java的系统属性,例如`java.library....
Jacob的使用涉及到以下几个关键知识点: 1. **Java Native Interface (JNI)**:JNI是Java平台的标准部分,它允许Java代码和其他语言写的代码进行交互。JNI在Jacob中的作用是提供一个桥梁,使得Java代码能够调用COM...
使用Jacob时,需要注意以下几点: - **配置环境**:确保系统环境变量正确设置,包括Jacob的jar文件和对应架构的DLL文件路径。 - **错误处理**:由于COM接口的特性,可能会遇到各种异常,需要做好错误处理和异常...
在使用Jacob时,开发者需要注意以下几点: 1. 配置环境:首先需要确保将`jacob.jar`添加到项目的类路径中,并将`jacob.dll`放在系统能够找到的路径下,通常是系统的`PATH`环境变量所包含的目录。 2. 类加载器问题...
Jacob的使用主要集中在以下几个方面: 1. **COM互操作性**:Jacob使得Java开发者可以方便地访问和控制任何COM接口,包括ActiveX控件、Office应用(如Excel、Word)、Windows API等。这对于需要在Java应用中集成...
使用Jacob时需要注意以下几点: 1. 配置环境:确保Java和Jacob库(`jacob.jar`和对应的`jacob.dll`)已正确添加到系统路径和类路径中。 2. 版本兼容性:Jacob可能需要与特定版本的Office软件匹配,因此在不同的...
在使用Jacob时,有几点需要注意: 1. **系统兼容性**:由于Jacob依赖于Windows的DLL,因此它只适用于Windows操作系统,不支持Linux或macOS。 2. **注册DLL**:在使用Jacob之前,通常需要在系统中注册对应的DLL文件,...
在IT行业中,尤其是在Web开发领域,提供用户在线预览Office文档的能力是一项常见且重要的功能。标题"免费Office文件在线预览"所指的就是...通过理解这些知识点,我们可以构建一个高效且安全的Office文档在线预览系统。