- 浏览: 20099 次
- 性别:
- 来自: 南京
最新评论
-
wavechao:
感觉求回文子串的有难度
2012.9.19华为机试java题目 -
Trying:
功能不可用啊,下载有异常
jsp实现web服务器文件列表并包含文件下载(更新中)
不是我原创的,网上找的参考资料。
java操作PPT
java操作word简单例子
java操作PPT
package com.asiainfo.chn.anareport.util; import java.io.File; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class JacobPptUtil { public static final int WORD_HTML = 8; public static final int WORD_TXT = 7; public static final int EXCEL_HTML = 44; public static final int ppSaveAsJPG = 17; private static final String ADD_CHART = "AddChart"; private ActiveXComponent ppt; private ActiveXComponent presentation; /** * 构造一个新的PPT * @param isVisble */ public JacobPptUtil(boolean isVisble){ if(null == ppt){ ppt = new ActiveXComponent("PowerPoint.Application"); ppt.setProperty("Visible", new Variant(isVisble)); ActiveXComponent presentations = ppt.getPropertyAsComponent("Presentations"); presentation =presentations.invokeGetComponent("Add", new Variant(1)); } } public JacobPptUtil(String filePath,boolean isVisble)throws Exception{ if (null == filePath || "".equals(filePath)) { throw new Exception("文件路径为空!"); } File file = new File(filePath); if (!file.exists()) { throw new Exception("文件不存在!"); } ppt = new ActiveXComponent("PowerPoint.Application"); setIsVisble(ppt, isVisble); // 打开一个现有的 Presentation 对象 ActiveXComponent presentations = ppt.getPropertyAsComponent("Presentations"); presentation = presentations.invokeGetComponent("Open", new Variant(filePath), new Variant(true)); } /** * 将ppt转化为图片 * * @param pptfile * @param saveToFolder * @author liwx */ public void PPTToJPG(String pptfile, String saveToFolder) { try { saveAs(presentation, saveToFolder, ppSaveAsJPG); if (presentation != null) { Dispatch.call(presentation, "Close"); } } catch (Exception e) { ComThread.Release(); } finally { if (presentation != null) { Dispatch.call(presentation, "Close"); } ppt.invoke("Quit", new Variant[] {}); ComThread.Release(); } } /** * 播放ppt * * @param pptFile * @date 2009-7-4 * @author YHY */ public void PPTShow(String pptFile) { // powerpoint幻灯展示设置对象 ActiveXComponent setting = presentation .getPropertyAsComponent("SlideShowSettings"); // 调用该对象的run函数实现全屏播放 setting.invoke("Run"); // 释放控制线程 ComThread.Release(); } /** * ppt另存为 * * @param presentation * @param saveTo * @param ppSaveAsFileType * @date 2009-7-4 * @author YHY */ public void saveAs(Dispatch presentation, String saveTo, int ppSaveAsFileType)throws Exception { Dispatch.call(presentation, "SaveAs", saveTo, new Variant( ppSaveAsFileType)); } /** * 关闭PPT并释放线程 * @throws Exception */ public void closePpt()throws Exception{ if (null != presentation) { Dispatch.call(presentation, "Close"); } ppt.invoke("Quit", new Variant[]{}); ComThread.Release(); } /** * 运行PPT * @throws Exception */ public void runPpt()throws Exception{ ActiveXComponent setting = presentation.getPropertyAsComponent("SlideShowSettings"); setting.invoke("Run"); } /** * 设置是否可见 * @param visble * @param obj */ private void setIsVisble(Dispatch obj,boolean visble)throws Exception{ Dispatch.put(obj, "Visible", new Variant(visble)); } /** * 在幻灯片对象上添加新的幻灯片 * @param slides * @param pptPage 幻灯片编号 * @param type 4:标题+表格 2:标题+文本 3:标题+左右对比文本 5:标题+左文本右图表 6:标题+左图表右文本 7:标题+SmartArt图形 8:标题+图表 * @return * @throws Exception */ private Variant addPptPage(ActiveXComponent slides,int pptPage,int type)throws Exception{ return slides.invoke("Add", new Variant(pptPage), new Variant(type)); } /** * * @param pageShapes 页面的SHAPES的对象 * @param chartType 图表类型 * @param leftDistance 距离左边框的距离 * @param topDistance 距离上边框的距离 * @param width 图表的宽度 * @param height 图表的高度 * @return * @throws Exception */ public Dispatch addChart(Dispatch pageShapes,int chartType,int leftDistance,int topDistance,int width,int height)throws Exception{ Variant chart = Dispatch.invoke(pageShapes, ADD_CHART, 1, new Object[]{ new Integer(chartType),//图表类型 new Integer(leftDistance),//距离左边框的距离 new Integer(topDistance),//距离上边框的距离 new Integer(width),//图表的宽度 new Integer(height),//图表的高度 }, new int[1]);//错误类型 return chart.toDispatch(); } /** * 获取第几个幻灯片 * @param index 序号,从1开始 * @return * @throws Exception */ public Dispatch getPptPage(int pageIndex)throws Exception{ //获取幻灯片对象 ActiveXComponent slides = presentation.getPropertyAsComponent("Slides"); //获得第几个PPT Dispatch pptPage = Dispatch.call(slides, "Item", new Object[]{new Variant(pageIndex)}).toDispatch(); Dispatch.call(pptPage, "Select"); return pptPage; } /** * 添加表格 * @param pageShapes 页面对象 * @param rows 行数 * @param columns 列数 * @param leftDistance 距离左边距离 * @param topDistance 距离顶部距离 * @param width 宽度 * @param height 高度 * @return * @throws Exception */ public Dispatch addTable(Dispatch pageShapes, long rows, long columns, int leftDistance, int topDistance, int width, int height) throws Exception { return Dispatch.invoke( pageShapes, "AddTable", 1, new Object[] { new Long(rows), new Long(columns), new Integer(leftDistance), new Integer(topDistance), new Integer(width), new Integer(height) }, new int[1]) .toDispatch(); } /** * 在Selection对象上修改TEXT对象的值 * @param selectionObj * @param value * @throws Exception */ public void addTextValue(Dispatch selectionObj,String value)throws Exception{ Dispatch shapeRange=(Dispatch)Dispatch.get(selectionObj, "ShapeRange").getDispatch(); Dispatch textFrame=(Dispatch)Dispatch.get(shapeRange, "TextFrame").getDispatch(); Dispatch textRange=(Dispatch)Dispatch.get(textFrame, "TextRange").getDispatch(); Dispatch.call(textRange, "Select"); Dispatch.put(textRange,"Text",value); } /** * 将数据添加到制定的单元格内 * @param cell 单元格对象 * @param value 需要添加的数据 * @throws Exception */ public void addCellValue(Dispatch cell,Object value)throws Exception{ Dispatch cellShape = Dispatch.get(cell, "Shape").toDispatch(); Dispatch cellFrame = Dispatch.get(cellShape, "TextFrame").toDispatch(); Dispatch cellRange = Dispatch.get(cellFrame, "TextRange").toDispatch(); Dispatch.put(cellRange, "Text", value); } /** * 合并单元格,合并之后原来两个单元格的内容将放到一个单元格里面 * 如果开始单元格和结束单元之间跨几个单元格,将会一起被合并 * @param cell 开始单元格 * @param cell2 结束单元格 * @return * @throws Exception */ public void mergeCell(Dispatch cell,Dispatch cell2)throws Exception{ Dispatch.invoke(cell, "Merge", 1, new Object[]{cell2}, new int[1]); } /** * 获取表格的制定单元格 * @param tableObj 表格对象 * @param rowNum 第几行,从1开始 * @param columnRum 第几列,从1开始 * @return * @throws Exception */ public Dispatch getCellOfTable(Dispatch tableObj,int rowNum,int columnRum)throws Exception{ return Dispatch.invoke(tableObj, "Cell", Dispatch.Method, new Object[]{new Long(rowNum),new Long(columnRum)}, new int[1]).toDispatch(); } /** * 设置单元格背景颜色 * @param cellObj * @param colorIndex * @throws Exception */ public void setCellBackColor(Dispatch cellObj,int colorIndex)throws Exception{ Dispatch cellShape = Dispatch.get(cellObj, "Shape").toDispatch(); Dispatch fillObj = Dispatch.get(cellShape, "Fill").toDispatch(); Dispatch backColor = Dispatch.get(fillObj, "ForeColor").toDispatch(); Dispatch.put(backColor, "ObjectThemeColor", colorIndex); Dispatch.put(fillObj, "ForeColor", backColor); } /** * 修改表格的样式,默认样式为:{5C22544A-7EE6-4342-B048-85BDC9FD1C3A} * @param tableObj 表格对象 * @param styleId 样式ID * @throws Exception */ public void editTableSyle(Dispatch tableObj,String styleId)throws Exception{ if(null == tableObj){ throw new Exception("无效的表格对象!"); } if(null == styleId || "".equals(styleId)){ throw new Exception("无效的样式ID!"); } Dispatch.invoke(tableObj, "ApplyStyle", Dispatch.Method, new Object[]{styleId}, new int[1]); } /** * 在TABLE对象上添加列 * @param tableObj * @param beforeColumn * @throws Exception */ public void addTableColumn(Dispatch tableObj,int beforeColumn)throws Exception{ Dispatch columns = Dispatch.get(tableObj, "Columns").getDispatch(); int count = Dispatch.get(columns, "Count").getInt(); if(beforeColumn > count || beforeColumn < 1){ throw new Exception("无效的列索引!"); } Dispatch.invoke(columns, "Add", Dispatch.Method, new Object[]{beforeColumn}, new int[1]); } /** * 在TABLE对象上添加行 * @param tableObj * @param beforeColumn * @throws Exception */ public void addTableRow(Dispatch tableObj,int beforeRow)throws Exception{ Dispatch rows = Dispatch.get(tableObj, "Rows").getDispatch(); int count = Dispatch.get(rows, "Count").getInt(); if(beforeRow > count || beforeRow <1){ throw new Exception("无效的行索引!"); } Dispatch.invoke(rows, "Add", Dispatch.Method, new Object[]{beforeRow}, new int[1]); } /** * 修改单个些列的图表类型 * @param chartObj 图表对象 * @param seriIndex 系列索引,从1开始 * @param chartType 图表类型 * @throws Exception */ public void updateSeriChartType(Dispatch chartObj,int seriIndex,int chartType)throws Exception{ Dispatch Seri1 = Dispatch.call(chartObj, "SeriesCollection", new Variant(seriIndex)).toDispatch(); Dispatch.put(Seri1,"ChartType",chartType); } /** * 设置是否显示图表的数据表格,当新增一个表格时默认时不显示的 * @param chartObj 表格对象 * @param bValue 布尔值,ture为显示,false为不显示 * @throws Exception */ public void setIsDispDataTable(Dispatch chartObj,boolean bValue)throws Exception{ if(null == chartObj){ throw new Exception("无效的图表对象!"); } Dispatch.put(chartObj, "HasDataTable", bValue); } /** * 获取表格的样式ID * @param tableObj * @return * @throws Exception */ public String getTableStyleId(Dispatch tableObj)throws Exception{ Dispatch tableStyle = Dispatch.get(tableObj, "Style").toDispatch(); return Dispatch.get(tableStyle, "Id").toString(); } /** * 设置图表上是否显示数据表格 * @param chartObj * @param value * @throws Exception */ public void setHasDataTable(Dispatch chartObj,boolean value)throws Exception{ Dispatch.put(chartObj, "HasDataTable", value); } public void getGeneragePpt() throws Exception { // 生成一个新的ppt 对象 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"); //添加第一张幻灯片; 标题+副标题 addPptPage(slides, 1, 1); Dispatch slideRange=(Dispatch)Dispatch.get(selection, "SlideRange").getDispatch(); Dispatch shapes=(Dispatch)Dispatch.get(slideRange, "Shapes").getDispatch(); //获取幻灯片中的第一个元素 Dispatch shape1 = Dispatch.call(shapes, "Item", new Variant(1)).toDispatch(); //获取幻灯片中的第二个元素 Dispatch shape2 = Dispatch.call(shapes, "Item", new Variant(2)).toDispatch(); //选中第一个元素 Dispatch.call(shape1, "Select"); //添加值 addTextValue(selection, "测试主标题"); //操作PPT一页中的第二个shape Dispatch.call(shape2, "Select"); addTextValue(selection, "测试副标题"); //添加第二张幻灯片(标题+图表) Variant v = addPptPage(slides, 2, 8); //获取第二个PPT对象 Dispatch pptTwo = v.getDispatch(); //激活当前PPT对象 Dispatch.call(pptTwo, "Select"); //获取PPT中的shapes shapes = Dispatch.get(pptTwo, "Shapes").toDispatch(); Dispatch shapeText = Dispatch.call(shapes, "Item", new Variant(1)).toDispatch(); //操作标题 Dispatch.call(shapeText, "Select"); addTextValue(selection, "测试图表标题"); //添加图表 Dispatch chartDisp = addChart(shapes, 2, 10, 130, 700, 200); Dispatch chartObj=Dispatch.get(chartDisp, "Chart").getDispatch(); setHasDataTable(chartObj, true); Dispatch chartData=Dispatch.get(chartObj, "ChartData").toDispatch(); //Variant chartStyleV=Dispatch.get(chartObj, "ChartFont"); Dispatch workBook=Dispatch.get(chartData, "Workbook").getDispatch(); Dispatch workSheets=Dispatch.get(workBook, "Worksheets").getDispatch(); Dispatch workSheetItem = Dispatch.call(workSheets, "Item", new Variant(1)).toDispatch(); Dispatch cell = Dispatch.invoke(workSheetItem, "Range", Dispatch.Get, new Object[] { "B3" }, new int[1]).toDispatch(); Dispatch.put(cell, "Value", 12); //7606 //修改单个系列的图表类型 //Dispatch Seri1 = Dispatch.call(chartObj, "SeriesCollection", new Variant(3)).toDispatch(); //Dispatch.put(Seri1,"ChartType",4); updateSeriChartType(chartObj, 3, 4); Dispatch chartArea = Dispatch.get(chartObj, "ChartArea").toDispatch(); //表格 /*Dispatch tableDisp = addTable(shapes, 3, 4, 50, 130, 600, 300); Dispatch tableObj=Dispatch.get(tableDisp, "Table").getDispatch(); //修改表格样式 Dispatch.invoke(tableObj, "ApplyStyle", 1, new Object[]{"{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}"}, new int[1]); //获取单元格 Dispatch cell = getCellOfTable(tableObj, 1, 1); Dispatch cell2 = getCellOfTable(tableObj, 2, 1); addCellValue(cell, "测试着玩的"); addCellValue(cell2, "哈哈"); //合并单元格 //mergeCell(cell, cell2); addTableColumn(tableObj, 4); addTableRow(tableObj, 3);*/ // powerpoint幻灯展示设置对象 ActiveXComponent setting = presentation.getPropertyAsComponent("SlideShowSettings"); //setting.invoke("Run"); //保存ppt presentation.invoke("SaveAs", new Variant("d:/a.ppt")); // 释放控制线程 ComThread.Release(); //closePpt(); } /** * 解析现有的PPT * @param filePath * @throws Exception */ public void invokePPTTemplate(String filePath)throws Exception{ Dispatch windows = presentation.getProperty("Windows").toDispatch(); Dispatch window = Dispatch.call(windows, "Item", new Variant(1)).toDispatch(); //获得第几个PPT Dispatch pptPage = getPptPage(1); Dispatch selection = Dispatch.get(window, "Selection").toDispatch(); Dispatch slideRange=Dispatch.get(selection, "SlideRange").getDispatch(); Dispatch shapes=Dispatch.get(slideRange, "Shapes").getDispatch(); //获取幻灯片中的第N个元素 Dispatch tableDisp = Dispatch.call(shapes, "Item", new Variant(2)).toDispatch(); //转换为Table对象 Dispatch tableObj = Dispatch.get(tableDisp, "Table").toDispatch(); //获得对象的Style的属性 Dispatch tableStyle = Dispatch.get(tableObj, "Style").toDispatch(); System.out.println(Dispatch.get(tableStyle, "Id")); //{91EBBBCC-DAD2-459C-BE2E-F6DE35CF9A28} /*//选中第一个元素 Dispatch.call(shape1, "Select"); Dispatch chartObj=Dispatch.get(shape1, "Chart").getDispatch(); Dispatch chartData=Dispatch.get(chartObj, "ChartData").toDispatch(); Dispatch workBook=Dispatch.get(chartData, "Workbook").getDispatch(); Dispatch workSheets=Dispatch.get(workBook, "Worksheets").getDispatch(); Dispatch workSheetItem = Dispatch.call(workSheets, "Item", new Variant(1)).toDispatch(); Dispatch cell = Dispatch.invoke(shape1, "Range", Dispatch.Get, new Object[] { "B3" }, new int[1]).toDispatch(); */ //修改单个系列的图表类型 //Dispatch Seri1 = Dispatch.call(chartObj, "SeriesCollection", new Variant(1)).toDispatch(); //Dispatch.put(Seri1,"ChartType","4"); //Dispatch chartArea = Dispatch.get(chartObj, "ChartArea").toDispatch(); //清楚图表内容 //Dispatch.call(chartArea, "ClearContents"); // powerpoint幻灯展示设置对象 ActiveXComponent setting = presentation.getPropertyAsComponent("SlideShowSettings"); //setting.invoke("Run"); //保存ppt //presentation.invoke("SaveAs", new Variant(filePath)); // 释放控制线程 ComThread.Release(); } public static void main(String[] strs)throws Exception{ String filePath="d:/a.ppt"; //JacobPptUtil jac = new JacobPptUtil(true); JacobPptUtil jac = new JacobPptUtil(filePath,true); //jac.getGeneragePpt(); jac.invokePPTTemplate(filePath); String templateSourcePath="d:/pptSource/统一经分模板_市场.ppt"; String PPTTargetPath="d:/pptTarget/统一经分模板_市场_new.ppt"; } }
java操作word简单例子
import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class Test1 { 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 = "D:\\1.PNG";// 图片的路径 Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(), "AddPicture", picturePath); /** * 关闭文档 */ Dispatch.call(document, "SaveAs", new Variant("d://abc1.doc")); // 保存一个新文档 ComThread.Release();// 释放com线程。根据jacob的帮助文档,com的线程回收不由java的垃圾回收器处理 } }
相关推荐
**Jacob API文档及使用方法** Jacob(Java COM Bridge)是一个开源Java库,它允许Java程序与COM组件进行交互。在Windows环境下,COM组件是广泛使用的,例如与Office应用程序(如Excel、Word)进行自动化操作。Jacob...
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:\...
本文将详细解析"jacob1.18"和"jacob1.19"这两个版本的特性、使用方法以及它们在Windows环境下的应用。 首先,我们来看"jacob1.18"版本。此版本是Jacob的一个较早发行版,它包含了一个名为"jacob.jar"的Java类库,这...
具体使用方法通常涉及以下步骤: 1. 添加Jacob的jar包到项目:将下载的Jacob版本对应的jar文件添加到项目的类路径中,确保编译和运行时都能找到。 2. 引入Jacob库:在Java代码中通过`import`语句导入Jacob的相关类...
《Jacob使用手册》 Jacob(Java COM Bridge)是一款强大的Java库,它允许Java应用程序与COM(Component Object Model)组件进行交互。在Windows环境下,许多功能丰富的应用程序和库都是基于COM技术构建的,如...
3. **初始化Jacob**:在调用任何Jacob方法之前,需要初始化Jacob,通常是通过创建一个`ComThread`对象并调用`Initialize()`方法: ```java ComThread.InitMultiThread(); ``` 4. **创建COM对象**:接下来,你...
**Jacob.jar及使用方法(1.17)** Jacob(Java COM Bridge)是一个Java库,它允许Java应用程序与Microsoft COM组件进行交互。这个库通过JNI(Java Native Interface)技术实现,使得开发者能够在Java环境中调用COM...
同时,阅读Jacob的官方文档和社区提供的示例代码可以帮助理解和掌握其用法。 总的来说,Jacob是一个强大而灵活的工具,它让Java开发者可以充分利用Windows平台上的COM组件,提升应用程序的功能。尽管需要关注兼容性...
JACOB里的总共有两个包: com jacob activeX:JACOB可以通过它调度(Dispatch)activeX 控件 com jacob com:JACOB通过它调用系统DLL (activeX是由微软公司推出的用于Internet的技术 以前曾经被称为OLE 和OCX...
这个压缩包"jacob1.19"包含了两个版本的Jacob动态链接库(DLL)文件:jacob-1.19-x64.dll适用于64位系统,而jacob-1.19-x86.dll则适用于32位系统。这两个文件是Jacob库的核心组成部分,它们实现了Java和COM之间的...
这个工具包包含了两个关键部分:`jacob.dll`和`jacob.jar`。 `jacob.dll`是一个动态链接库(Dynamic Link Library),在Windows环境下运行时,Java程序需要此DLL来调用COM接口。它是Jacob的核心,实现了Java到COM的...
使用方法: 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. 如果...
在使用这个版本之前,确保你的系统环境满足Jacob的运行需求,包括安装了对应的JDK和Windows平台支持。 使用Jacob时,你需要在项目中添加com.jacob.jacob_1.10.jar作为依赖。这可以通过Maven或Gradle等构建工具实现...
**Jacob使用说明终极吐血版** Jacob(Java和COM Bridge)是一个开源的Java库,它提供了在Java应用程序中调用Windows COM组件的能力。这个库使得Java开发者能够利用大量的已有的COM对象,比如Microsoft Office组件,...
2. **初始化COM**:使用` JacobAutoProxy.init()`方法初始化Jacob,确保COM组件可以被正确加载。 3. **创建COM对象**:通过`ActiveXComponent`类创建COM对象,如`new ActiveXComponent("Word.Application")`来实例...
这个压缩包包含了Jacob的最新版本,即1.20版,包括两个动态链接库(DLL)文件:`jacob-1.20-x64.dll`和`jacob-1.20-x86.dll`,以及Java类库`jacob-1.20.jar`。这些文件分别用于64位和32位的Windows系统,确保了在...
在压缩包中的"jacob+api.rar"文件中,包含了Jacob库的API文档,可以帮助开发者查找和理解各个类和方法的具体用法。这个文档是开发者使用Jacob进行开发的重要参考资料,应当仔细阅读。 **五、示例应用** 例如,使用...
这是因为JACOB通过Office组件进行文档转换,而Acrobat则用于PDF的创建和编辑。 2.3 **JAR与DLL配置** 下载并解压JACOB的ZIP包,根据你的系统架构(32位或64位)选择相应的`.dll`文件,将其复制到系统`System32`...
里面数据类型的转换的方法 Variant类本身是JACOB的最最基本的数据类 他可以被转换成任何的类 如: 使用toDispatch();可以将Variant转化成Dispatch对象 ) com jacob com中还有其他的一些类不是建立在...
对于32位系统,你需要使用jacob-x86.dll,而对于64位系统,则需要使用jacob-x64.dll。这两个DLL文件是Jacob与操作系统交互的关键,它们实现了Java和COM之间的桥接。 使用Jacob时,你需要先将对应的DLL文件添加到...