最近因为项目需要,特地研究了两天jacob--操作office的一个java插件,因时间缘故,只研究了操作word,特此共享:
本人喜欢通过代码学习东西,所以,直接讲操作的代码拷贝出来,供大家分享。
public static void main(String args[]) {
ComThread.InitSTA();// 初始化com的线程,非常重要!!使用结束后要调用 realease方法
/**
完成初始化工作
*/
ActiveXComponent objWord = new ActiveXComponent("Word.Application");// Instantiate objWord and Declare word object
Dispatch wordObject = (Dispatch) objWord.getObject();// Assign a local word object
Dispatch.put((Dispatch) wordObject, "Visible", new Variant(true));// Variant(true)表示word应用程序可见
Dispatch documents = objWord.getProperty("Documents").toDispatch(); // documents表示word的所有文档窗口,(word是多文档应用程序)
Dispatch document = Dispatch.call(documents, "Add").toDispatch(); // 使用Add命令创建一个新文档,用Open命令可以打开一个现有文档
/**
*开始写word的工作,包括标题,正文(段落一、段落二)
*/
Dispatch wordContent = Dispatch.get(document, "Content").toDispatch(); // 取得word文件的内容
Dispatch selection = Dispatch.get(wordObject, "Selection").toDispatch();
Dispatch paragraphFormat=Dispatch.get(selection,"ParagraphFormat").getDispatch();
Dispatch font = Dispatch.get(selection, "Font").toDispatch(); // 字型格式化需要的对象
Dispatch.put(paragraphFormat, "Alignment", "1"); // 设置标题的对齐方式(1:置中 2:靠右 3:靠左)
Dispatch.put(font, "Bold", "1"); // 字型租体
Dispatch.put(font, "Color", "1,0,0,0"); // 字型颜色(1,0,0,0=>红色 1,1,0,0=>棕色)
Dispatch.put(font, "Italic", "1"); //字型斜体
Dispatch.call(selection, "TypeText", "标题"); // 写入标题内容
Dispatch.call(selection, "TypeParagraph"); // 空一行段落
Dispatch.put(paragraphFormat, "Alignment", "3"); // 设置正文的对齐方式(1:置中 2:靠右 3:靠左)
Dispatch.put(selection, "Text", " 段落one");
Dispatch.call(selection,"MoveRight");
Dispatch.call(selection, "TypeParagraph"); // 空一行段落
Dispatch.put(selection, "Text", " 段落two");
Dispatch.call(selection,"MoveRight");
/**
* 写一个新的table
*/
Dispatch tables = Dispatch.get(wordContent, "Tables").toDispatch();
Dispatch tablerange = Dispatch.get(selection, "Range").toDispatch();
Dispatch newTable = Dispatch.call(tables, "Add", tablerange,
new Variant(2), new Variant(3)).toDispatch();
/**
* 往表格中填写内容。
*/
Dispatch newtables = Dispatch.get(wordContent, "Tables").toDispatch();
Dispatch table = Dispatch.call(newtables, "Item", new Variant(1)).toDispatch(); // 要填充的表格
Dispatch cols = Dispatch.get(table, "Columns").toDispatch(); // 表格的所有行
Dispatch rows = Dispatch.get(table, "Rows").toDispatch(); // 表格的所有列
int colsCount=Dispatch.get(cols, "Count").toInt();
int rowsCount=Dispatch.get(rows,"Count").toInt();
Dispatch col = Dispatch.get(cols, "First").toDispatch();
for(int i=1;i<=rowsCount;i++)
{
for(int m=1;m<=colsCount;m++)
{
Dispatch cell=Dispatch.call(table,"Cell",new Variant(i),new Variant(m)).getDispatch();
Dispatch.call(cell, "Select");
Dispatch.put(selection, "Text",i*m );
Dispatch.call(selection,"MoveRight");
}
}
Dispatch.call(selection, "EndKey",6);
/**
* 开始读word的工作
*/
Dispatch paragraphs = Dispatch.get(wordContent, "Paragraphs").toDispatch(); // 所有段落
int paragraphCount = Dispatch.get(paragraphs, "Count").toInt(); // 一共的段落数
for(int i =1;i<=paragraphCount;i++)
{
Dispatch paragraph = Dispatch.call(paragraphs, "Item", new Variant(i)).toDispatch();
Dispatch range = Dispatch.call(paragraph,"Range").toDispatch();
String ptext = Dispatch.get(range, "text").getString();
System.out.println(ptext);
}
/**
*加入图片
*/
String picturePath="E:\\照片\\苏歆然\\2009-01-08-00.bmp";//图片的路径
Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),
"AddPicture", picturePath);
/**
* 关闭文档
*/
Dispatch.call(document, "SaveAs", new Variant("d://abc1.doc")); // 保存一个新文档
ComThread.Release();//释放com线程。根据jacob的帮助文档,com的线程回收不由java的垃圾回收器处理
}
生成的word 的格式如下:
补充:jacob操作powerpoint
ActiveXComponent ppt = new ActiveXComponent("PowerPoint.Application");
Dispatch pptObject=ppt.getObject();
Dispatch.put((Dispatch) pptObject, "Visible", new Variant(true));
// 设置程序界面是否可见
ActiveXComponent presentations = ppt.getPropertyAsComponent("Presentations");
// 生成一个新的ppt 对象
ActiveXComponent presentation =presentations.invokeGetComponent("Add", new Variant(1));
Dispatch windows = presentation.getProperty("Windows").toDispatch();
Dispatch window = Dispatch.call(windows, "Item", new Variant(1)).toDispatch();
Dispatch selection = Dispatch.get(window, "Selection").toDispatch();
ActiveXComponent slides = presentation.getPropertyAsComponent("Slides");
//添加第一张幻灯片;
slides.invoke("Add", new Variant(1), new Variant(1));
Dispatch slideRange=Dispatch.get(selection, "SlideRange").getDispatch();
Dispatch shapes=Dispatch.get(slideRange, "Shapes").getDispatch();
Dispatch shape1 = Dispatch.call(shapes, "Item", new Variant(2)).toDispatch();
Dispatch.call(shape1, "Select");
Dispatch shapeRange=Dispatch.get(selection, "ShapeRange").getDispatch();
Dispatch textFrame=Dispatch.get(shapeRange, "TextFrame").getDispatch();
Dispatch textRange=Dispatch.get(textFrame, "TextRange").getDispatch();
Dispatch.call(textRange, "Select");
Dispatch.put(textRange,"Text","测试");
//添加第二张幻灯片;
slides.invoke("Add", new Variant(2), new Variant(1));
// powerpoint幻灯展示设置对象
ActiveXComponent setting = presentation.getPropertyAsComponent("SlideShowSettings");
setting.invoke("Run");
//保存ppt
presentation.invoke("SaveAs", new Variant(PPT_FILE));
// 释放控制线程
ComThread.Release();
- 大小: 19.4 KB
分享到:
相关推荐
1.将jacob-1.18.zip下载解压,在文件夹中找到jacob-1.18-x64.dll,jacob-1.18-x86.dll,jacob.jar 2.通过 pom.xml 新增 <groupId>com.hynnet</groupId> <artifactId>jacob <version>1.18 3. 如果是32位系统...
JACOB里的总共有两个包: com jacob activeX:JACOB可以通过它调度(Dispatch)activeX 控件 com jacob com:JACOB通过它调用系统DLL (activeX是由微软公司推出的用于Internet的技术 以前曾经被称为OLE 和OCX...
jacob.jar1.19及使用方法 解压后获得3个文件 jacob.jar jacob-1.17-x64.dll jacob-1.17-x86.dll jacob.jar 放到项目的lib目录 win7 jacob-1.17-x64.dll 放到C:\Windows\System32 jacob-1.17-x86.dll 放到C:\...
jacob-1.18的资源包还有 jacob-1.18-x64.dll和jacob-1.18-x86.dll. 把对应的windows版本扔到 C:\Windows\System32 并添加环境变量大到path中 “%SYSTEMROOT%\System32\jacob-1.18-x86.dll;”或者 “%SYSTEMROOT%\...
本书使用的是jacob1.7,从如下网址可下载得到: http://danadler.com/jacob/ 但是使用JACOB可以先编写COM组件,再在Java中调用,这在许多遗留在系统中COM组件是常用的,因此,使用JACOB对于系统的集成是比较实用的...
jacob-1.19-x64.dll jacob-1.19-x86.dll jacob.jar LICENSE.TXT BuildingJacobFromSource.html EventCallbacks.html JacobComLifetime.html JacobThreading.html ReleaseNotes.html UsingJacob.html allclasses-...
1、把jacob.dll文件,复制到 windows\system32 目录下。(注:我用的时候这个方法不能运行) 2、 把jacob.dll放入 Java\jdk1.5.0_06\jre\bin目录下.把jacob.jar放入 Java\jdk1.5.0_0\jre\lib\ext 目录下.可以正常...
jacob-1.18 包含jacob-1.18-x64.dll jacob-1.18-x86.dll 亲测可用: 下面为转pdf使用方法 package com.pdf.doctopdf.pdf; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import ...
jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob...
com.jacob.jacob_1.10jar包下载
jacob.jar1.20及使用方法 解压后获得3个文件 jacob.jar jacob-1.20-x64.dll jacob-1.20-x86.dll 包含(32位,64位)以及文档 jacob(java com bradge) 通过调用MS OFFICE可以快捷的将word excel ppt等转换为pdf
jacob1.7的jar文件 + jacob1.9的dll文件 jdk版本:1.6.0_27(目测1.6跟1.5都是可以的→。→) 组合理由引用:“为什么又有1.7又有1.9呢,是因为1.7的jacob.dll不好用,1.9的jacob.dll配合1.7的jacob.jar就好用了,...
jacob.jar资源下载 “JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32 libraries。” 首先下载Jacob包,JDK1.5以上需要使用Jacob1.9版本(JDK1.6尚未测试),与先前的Jacob1.7差别...
2020最新版jacob 1.20.jar jacob-1.20-x64.dll jacob-1.20-x86.dll
java操作office的jar包,其中jacob.jar放在项目jar文件夹中,jacob.dll放在C:\Windows\System32文件夹下
jacob1.19(包含jacob-1.19-x64.dll和jacob-1.19-x86.dll)
jacob1.19(包含jacob-1.19-x64.dll和jacob-1.19-x86.dll)
jacob 1.9语音生成文件,jacob x64.dll和jacob.jar 版本为1.9。 jacob.dll放入 C:\Program Files\Java\jdk1.8.0_121\jre\bin jacob.jar通过idea配置到项目dependencies
jacob操作office工具的安装包,分操作系统64、32位 复制到 C:\Windows\SysWOW64 、 C:\Windows\System32 以及jdk、jre/bin下各
java-COM中间件,压缩包里包含jacob-1.14.3.jar、jacob-1.14.3-x64.dll