jacob开发运行环境的配置及拷贝一个文档到另一个文档中保存

1 篇文章 0 订阅

前期准备工作:

1.配置开发运行环境

目前最新版本1.18jacob-1.18下载,主要有三个文件:

jacob.jar

jacob-1.18-x64.dll

jacob-1.18-x86.dll

dll文件有俩,对应windows 64 和32

1.将jacob-1.18-x64.dll放到64位的java的jdk或jre下的bin目录下

如果是32位系统就将jacob-1.18-x86.dll放到32位的jdk或jre下的bin目录下

2.将要操作的dll 文件放到相应的系统目录下

32位dll放到 C:\Windows\System32 目录下

64位dll放到 C:\Windows\SysWOW64 目录下

3.您需要在操作系统中注册 COM 组件,可以使用 Redemption 工具包本身提供的安装程序,也可以采用 Windows 系统自带的 REGSVR32 工具来注册 DLL 文件。运行cmd,注册dll

将目录切换到相应的系统目录下运行

regsvr32 xxx.dll

4.通过使用OLE/COM对象查看器查看dll信息

找到dll引用的信息

2.Java项目创建和调用

1..将 jacob.jar 文件添加到您的工程的构建路径

2.源代

package java_word;
/**
	1580536707@qq.com
	2018年4月19日
**/

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant; 

public class DispatchTest
{
	
  public static String fileRealPath = "C:\\Users\\Desktop\\原文档.doc";
  public static String saveNewRealpath = "C:\\Users\\Desktop\\副本.doc";
  
  public static void main(String[] args)
  {
  //这是copy全文方法
    ComThread.InitSTA();
     //被复制的文档
    ActiveXComponent word2= new ActiveXComponent("Word.Application");
    word2.setProperty("Visible", new Variant(false));
    Dispatch documents2 = word2.getProperty("Documents").toDispatch();
    //复制的文档
    ActiveXComponent word= new ActiveXComponent("Word.Application");
    word.setProperty("Visible", new Variant(false));
    Dispatch documents = word.getProperty("Documents").toDispatch();
    
    Dispatch doc2 = Dispatch.call(documents2, "Open",saveNewRealpath ).toDispatch();
    //复制模板的内容
    Dispatch doc = Dispatch.call(documents, "Open",fileRealPath).toDispatch();
    Dispatch wordContent = Dispatch.get(doc, "Content").toDispatch();
    			      	
    /*Dispatch paragraphs = Dispatch.get(doc2, "Paragraphs").toDispatch();
     Dispatch paragraph = Dispatch.call(paragraphs, "Item",new Variant(40)).toDispatch();
    Dispatch range = Dispatch.get(paragraph, "Range").toDispatch();
    Dispatch.call(range, "Copy");*/
    Dispatch.call(wordContent, "Copy");
    Dispatch selection = Dispatch.get(word2, "Selection").toDispatch(); 
    Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();
    Dispatch.call(textRange, "Paste");
    Dispatch.call(doc2, "Save");
    Dispatch.call(doc2, "Close", new Variant(true));
    Dispatch.call(word2, "Quit");
    doc2 = null; 
    word2 = null;
    Dispatch.call(doc, "Close", new Variant(true));
    Dispatch.call(word , "Quit");
    doc = null; 
    word  = null;
    documents2 = null;
    ComThread.Release();
  }
}

注意:文档路径下先创建好文件,如果文件不存在文件打开将失败

    用jacob开发最好将电脑上的wps卸载,否则可能出现一些错误,比如文件保存失败。因为wps经常会修改电脑默认程序配置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我并不是一个可以浏览文档的程序,也没有能力打开网页查找相关信息。但是,我可以告诉你如何使用Java将多个Word文档合并为一个Word文档。 可以使用Apache POI库来操作Word文档。以下是将多个Word文档合并为一个Word文档的示例代码: ``` import java.io.*; import org.apache.poi.xwpf.usermodel.*; public class MergeWordDocuments { public static void main(String[] args) throws Exception { String[] files = {"doc1.docx", "doc2.docx", "doc3.docx"}; XWPFDocument finalDoc = new XWPFDocument(); for (String file : files) { XWPFDocument doc = new XWPFDocument(new FileInputStream(file)); for (XWPFParagraph para : doc.getParagraphs()) { XWPFParagraph newPara = finalDoc.createParagraph(); newPara.createRun().setText(para.getText()); } for (XWPFTable tbl : doc.getTables()) { XWPFTable newTbl = finalDoc.createTable(); newTbl.getCTTbl().setTblPr(tbl.getCTTbl().getTblPr()); for (int i = 0; i < tbl.getRows().size(); i++) { XWPFTableRow row = newTbl.getRow(i); if (row == null) row = newTbl.createRow(); for (int j = 0; j < tbl.getRow(i).getTableCells().size(); j++) { XWPFTableCell cell = row.getCell(j); if (cell == null) cell = row.createCell(); cell.getCTTc().setTcPr(tbl.getRow(i).getCell(j).getCTTc().getTcPr()); for (XWPFParagraph para : tbl.getRow(i).getCell(j).getParagraphs()) { XWPFParagraph newPara = cell.addParagraph(); newPara.createRun().setText(para.getText()); } } } } } FileOutputStream out = new FileOutputStream("finalDoc.docx"); finalDoc.write(out); out.close(); finalDoc.close(); } } ``` 上述代码将会把 `doc1.docx`,`doc2.docx` 和 `doc3.docx` 合并为 `finalDoc.docx` 文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值