Jacob操作office文档(Word,PPT,Excel)
jacob 操作 word
- public boolean doc2pdf(String srcFilePath, String pdfFilePath) {
- ActiveXComponent app = null;
- Dispatch doc = null;
- try {
- ComThread.InitSTA();
- app = new ActiveXComponent("Word.Application");
- app.setProperty("Visible", false);
- Dispatch docs = app.getProperty("Documents").toDispatch();
- doc = Dispatch.invoke(docs, "Open", Dispatch.Method,
- new Object[] { srcFilePath,
- new Variant(false),
- new Variant(true),//是否只读
- new Variant(false),
- new Variant("pwd") },
- new int[1]).toDispatch();
- // Dispatch.put(doc, "Compatibility", false); //兼容性检查,为特定值false不正确
- Dispatch.put(doc, "RemovePersonalInformation", false);
- Dispatch.call(doc, "ExportAsFixedFormat", pdfFilePath, wdFormatPDF); // word保存为pdf格式宏,值为17
- return true; // set flag true;
- } catch (ComFailException e) {
- return false;
- } catch (Exception e) {
- return false;
- } finally {
- if (doc != null) {
- Dispatch.call(doc, "Close", false);
- }
- if (app != null) {
- app.invoke("Quit", 0);
- }
- ComThread.Release();
- }
- }
Jacob操作ppt
- public boolean ppt2pdf(String srcFilePath, String pdfFilePath) {
- ActiveXComponent app = null;
- Dispatch ppt = null;
- try {
- ComThread.InitSTA();
- app = new ActiveXComponent("PowerPoint.Application");
- Dispatch ppts = app.getProperty("Presentations").toDispatch();
- // 因POWER.EXE的发布规则为同步,所以设置为同步发布
- ppt = Dispatch.call(ppts, "Open", srcFilePath, true,// ReadOnly
- true,// Untitled指定文件是否有标题
- false// WithWindow指定文件是否可见
- ).toDispatch();
- Dispatch.call(ppt, "SaveAs", pdfFilePath, ppSaveAsPDF); //ppSaveAsPDF为特定值32
- return true; // set flag true;
- } catch (ComFailException e) {
- return false;
- } catch (Exception e) {
- return false;
- } finally {
- if (ppt != null) {
- Dispatch.call(ppt, "Close");
- }
- if (app != null) {
- app.invoke("Quit");
- }
- ComThread.Release();
- }
- }
Jacob操作Excel
- package com;
- import java.io.ObjectInputStream.GetField;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import com.jacob.activeX.ActiveXComponent;
- import com.jacob.com.ComThread;
- import com.jacob.com.Dispatch;
- import com.jacob.com.Variant;
- public class ready {
- private static ActiveXComponent xl = null; //Excel对象(防止打开多个)
- private static Dispatch workbooks = null; //工作簿对象
- private Dispatch workbook = null; //具体工作簿
- private Dispatch sheets = null;// 获得sheets集合对象
- private Dispatch currentSheet = null;// 当前sheet
- /**
- * 打开excel文件
- * @param filepath 文件路径名称
- * @param visible 是否显示打开
- * @param readonly 是否只读方式打开
- */
- private void OpenExcel(String filepath, boolean visible) {
- try {
- initComponents(); //清空原始变量
- ComThread.InitSTA();
- if(xl==null)
- xl = new ActiveXComponent("Excel.Application"); //Excel对象
- xl.setProperty("Visible", new Variant(visible));//设置是否显示打开excel
- if(workbooks==null)
- workbooks = xl.getProperty("Workbooks").toDispatch(); //打开具体工作簿
- workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method,
- new Object[] { srcFilePath,
- new Variant(false), // 是否以只读方式打开
- new Variant(true),
- "1",
- "pwd" }, //输入密码"pwd",若有密码则进行匹配,无则直接打开
- new int[1]).toDispatch();
- } catch (Exception e) {
- e.printStackTrace();
- releaseSource();
- }
- }
- /**
- * 工作簿另存为
- * @param filePath 另存为的路径
- * 例如 SaveAs="D:TEST/c.xlsx"
- */
- private void SaveAs(String filePath){
- Dispatch.call(workbook, "SaveAs",filePath);
- }
- /**
- * 关闭excel文档
- * @param f 含义不明 (关闭是否保存?默认false)
- */
- private void CloseExcel(boolean f) {
- try {
- Dispatch.call(workbook, "Save");
- Dispatch.call(workbook, "Close", new Variant(f));
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- releaseSource();
- }
- }
- /*
- * 初始化
- * */
- private void initComponents(){
- workbook = null;
- currentSheet = null;
- sheets = null;
- }
- /**
- * 释放资源
- */
- private static void releaseSource(){
- if(xl!=null){
- xl.invoke("Quit", new Variant[] {});
- xl = null;
- }
- workbooks = null;
- ComThread.Release();
- System.gc();
- }
- /**
- * 得到当前sheet
- * @return
- */
- private Dispatch getCurrentSheet() {
- currentSheet = Dispatch.get(workbook, "ActiveSheet").toDispatch();
- return currentSheet;
- }
- /**
- * 修改当前工作表的名字
- * @param newName
- */
- private void modifyCurrentSheetName(String newName) {
- Dispatch.put(getCurrentSheet(), "name", newName);
- }
- /**
- * 得到当前工作表的名字
- * @return
- */
- private String getCurrentSheetName(Dispatch sheets) {
- return Dispatch.get(sheets, "name").toString();
- }
- /**
- * 通过工作表名字得到工作表
- * @param name sheetName
- * @return
- */
- private Dispatch getSheetByName(String name) {
- return Dispatch.invoke(getSheets(), "Item", Dispatch.Get, new Object[]{name}, new int[1]).toDispatch();
- }
- /**
- * 得到sheets的集合对象
- * @return
- */
- private Dispatch getSheets() {
- if(sheets==null)
- sheets = Dispatch.get(workbook, "sheets").toDispatch();
- return sheets;
- }
- /**
- * 通过工作表索引得到工作表(第一个工作簿index为1)
- * @param index
- * @return sheet对象
- */
- private Dispatch getSheetByIndex(Integer index) {
- return Dispatch.invoke(getSheets(), "Item", Dispatch.Get, new Object[]{index}, new int[1]).toDispatch();
- }
- /**
- * 得到sheet的总数
- * @return
- */
- private int getSheetCount() {
- int count = Dispatch.get(getSheets(), "count").toInt();
- return count;
- }
- /**
- * 给所有的sheet添加背景
- * @param filepath 图片路径
- */
- public void setBlackGroudPrituce(String filepath)
- {
- int num=this.getSheetCount();
- for (int i = 1; i <= num; i++) {
- Dispatch sheets=this.getSheetByIndex(i);
- Dispatch.call(sheets,"SetBackgroundPicture",filepath);
- }
- }
- /**
- * 添加新的工作表(sheet),并且隐藏(添加后为默认为当前激活的工作表)
- */
- public void addSheet(String name) {
- // for (int i = 1; i <= this.getSheetCount(); i++) {
- // Dispatch sheets=this.getSheetByIndex(i);
- // if(name.equals(this.getCurrentSheetName(sheets)))
- // {
- // return false;
- // }
- // }
- currentSheet=Dispatch.get(Dispatch.get(workbook, "sheets").toDispatch(), "add").toDispatch();
- // Dispatch.put(currentSheet,"Name",name);
- Dispatch.put(currentSheet, "Visible", new Boolean(false));
- System.out.println("插入信息为:"+name);
- }
- /**
- * 得到工作薄的名字
- * @return
- */
- private String getWorkbookName() {
- if(workbook==null)
- return null;
- return Dispatch.get(workbook, "name").toString();
- }
- /**
- * 获取所有表名
- */
- public List findSheetName()
- {
- int num=this.getSheetCount();
- List list=new ArrayList();
- for (int i = 1; i <= num; i++) {
- currentSheet=this.getSheetByIndex(i);
- list.add(this.getCurrentSheetName(currentSheet));
- }
- return list;
- }
- /**
- * 设置页脚信息
- */
- private void setFooter(String foot) {
- currentSheet=this.getCurrentSheet();
- Dispatch PageSetup=Dispatch.get(currentSheet,"PageSetup").toDispatch();
- Dispatch.put(PageSetup,"CenterFooter",foot);
- }
- /**
- * 获取页脚信息
- */
- private String getFooter() {
- currentSheet=this.getCurrentSheet();
- Dispatch PageSetup=Dispatch.get(currentSheet,"PageSetup").toDispatch();
- return Dispatch.get(PageSetup,"CenterFooter").toString();
- }
- /**
- * 锁定工作簿
- */
- private void setPassword() {
- Dispatch.call(workbook, "Protect",123,true,false);
- }
- /**
- * 设置名称管理器
- * @param name 名称管理器名 不能以数字或者下划线开头,中间不能包含空格和其他无效字符
- * @param comment 备注
- * @param place 备注位置
- * @return
- */
- public void setName(String name,String place,String comment) {
- Dispatch Names=Dispatch.get(workbook, "Names").toDispatch();
- Dispatch.call(Names,"Add",name,place,false).toDispatch();
- Dispatch.put(Names, "Comment", comment); //插入备注
- }
- /**
- * 获取名称管理器
- * @param name 名称管理器名
- * @return
- */
- public String getName(String name) {
- Dispatch Names=Dispatch.get(workbook, "Names").toDispatch();
- Dispatch Name=Dispatch.call(Names,"Item",name).toDispatch();
- return Dispatch.get(Name, "Value").toString();
- }
- /**
- * 单元格写入值
- * @param sheet 被操作的sheet
- * @param position 单元格位置,如:C1
- * @param type 值的属性 如:value
- * @param value
- */
- private void setValue(String position, Object value) {
- currentSheet=this.getCurrentSheet();
- Dispatch cell = Dispatch.invoke(currentSheet, "Range",
- Dispatch.Get, new Object[] { position }, new int[1])
- .toDispatch();
- Dispatch.put(cell, "Value", value);
- String color=this.getColor(cell);
- this.setFont(cell,color);
- }
- /**
- * 设置字体
- */
- private void setFont(Dispatch cell,String color)
- {
- Dispatch font=Dispatch.get(cell, "Font").toDispatch();
- //Dispatch.put(font,"FontStyle", "Bold Italic");
- Dispatch.put(font,"size", "1");
- Dispatch.put(font,"color",color);
- }
- /**
- * 获取背景颜色
- */
- private String getColor(Dispatch cell)
- {
- Dispatch Interior=Dispatch.get(cell, "Interior").toDispatch();
- String color=Dispatch.get(Interior, "color").toString();
- return color;
- }
- /**
- * 单元格读取值
- * @param position 单元格位置,如: C1
- * @param sheet
- * @return
- */
- private Variant getValue(String position) {
- currentSheet=this.getCurrentSheet();
- Dispatch cell = Dispatch.invoke(currentSheet, "Range", Dispatch.Get,
- new Object[] { position }, new int[1]).toDispatch();
- Variant value = Dispatch.get(cell, "Value");
- return value;
- }
- /**
- * 获取最大行数
- * @return
- */
- private int getRowCount() {
- currentSheet=this.getCurrentSheet();
- Dispatch UsedRange=Dispatch.get(currentSheet, "UsedRange").toDispatch();
- Dispatch rows=Dispatch.get(UsedRange, "Rows").toDispatch();
- int num=Dispatch.get(rows, "count").getInt();
- return num;
- }
- /**
- * 获取最大列数
- * @return
- */
- private int getColumnCount() {
- currentSheet=this.getCurrentSheet();
- Dispatch UsedRange=Dispatch.get(currentSheet, "UsedRange").toDispatch();
- Dispatch Columns=Dispatch.get(UsedRange, "Columns").toDispatch();
- int num=Dispatch.get(Columns, "count").getInt();
- return num;
- }
- /**
- * 获取位置
- * @param rnum 最大行数
- * @param cnum 最大列数
- */
- private String getCellPosition(int rnum,int cnum)
- {
- String cposition="";
- if(cnum>26)
- {
- int multiple=(cnum)/26;
- int remainder=(cnum)%26;
- char mchar=(char)(multiple+64);
- char rchar=(char)(remainder+64);
- cposition=mchar+""+rchar;
- }
- else
- {
- cposition=(char)(cnum+64)+"";
- }
- cposition+=rnum;
- return cposition;
- }
- /*
- * 取消兼容性检查,在保存或者另存为时改检查会导致弹窗
- */
- private viod setCheckCompatibility(){
- Dispatch.put(wookbook, "CheckCompatibility", false);
- }
- /*
- * 为每个表设置打印区域
- */
- private void setPrintArea(){
- int count = Dispatch.get(sheets, "count").changeType(Variant.VariantInt).getInt();
- for (int i = count; i >= 1; i--) {
- sheet = Dispatch.invoke(sheets, "Item",
- Dispatch.Get, new Object[] { i }, new int[1]).toDispatch();
- Dispatch page = Dispatch.get(sheet, "PageSetup").toDispatch();
- Dispatch.put(page, "PrintArea", false);
- Dispatch.put(page, "Orientation", 2);
- Dispatch.put(page, "Zoom", false); //值为100或false
- Dispatch.put(page, "FitToPagesTall", false); //所有行为一页
- Dispatch.put(page, "FitToPagesWide", 1); //所有列为一页(1或false)
- }
- }
- }
相关推荐
标题提到的"Jacob Word excel 转PDF 合并PDF文件"是指使用Jacob库来将Microsoft Word和Excel文档转换为PDF格式,并进一步合并多个PDF文件。Jacob(Java Advanced COM Bridge)是一个Java库,它允许Java应用程序与...
在这个场景中,我们使用Jacob来实现Word文档到PDF的转换,以保持格式的一致性和美观性。在转换过程中,确保你的计算机上已经安装了Office 2010或更高版本,因为较低版本可能无法支持某些功能,导致转换失败或出现...
标题“JacobWord2010-03-31.rar”和描述中提到的文件名表明,这是一个关于Microsoft Word 2010的教程或参考资料的压缩包,可能包含了由用户“Jacob”创建或整理的文件,日期为2010年3月31日。由于标签与标题相同,...
标题“jacob读取word表格”涉及到的是使用Jacob库来操作Microsoft Word文档,特别是从中读取表格数据。Jacob是一个Java到COM桥接库,允许Java应用程序调用COM组件,如Microsoft Office的应用程序。 在Java中,直接...
在标题“jacobWord水印”中提到的,是利用`jacob`库为Microsoft Word文档添加水印的功能。水印通常用于在文档中添加一种半透明的标识,可以是文字或图形,用来表示文档的状态(如“草稿”、“机密”)或者版权信息。...
java操作word 超简单实用:第一步: 引入包jacob.jar 第二步:参考工具类MsWordTool.java 含概基本WORD 所有操作方法 【特别难点】解决实例: 1)word书签内容替换后,书签会丢失问题 2)word定点批量插入图片...
"通过jacob实现word转为HTML"这个主题就是关于如何利用Java的一个库——Jacob来完成这项工作。Jacob是一个Java到COM桥接库,允许Java程序调用Windows COM组件,如Microsoft Office,从而实现对Office文档的操作。 ...
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 目录下.可以正常...
本教程将详细介绍如何使用Java结合Jacob库将Microsoft Word文档转换为PDF格式,确保转换后的文件保持原格式的完美性。Jacob是一个Java到COM桥接库,允许Java应用程序访问COM组件,如Microsoft Office。 首先,我们...
利用jacob实现替换word文本和图片,需要导入响应jar包和dll.
Jacob word,excel转换html,txt 只要改变一个参数就可随意转化 WORD_HTML = 8; WORD_TXT = 7; EXCEL_HTML = 44; 替换这几个参数即可
《Jacob:Word处理利器》 在信息技术领域,文档处理是一项不可或缺的任务,尤其在企业级应用中,Word文档的转换和操作频繁出现。Jacob是一个强大的Java库,它为Java应用程序提供了与Microsoft Office交互的能力,...
在上述代码中,`loadJacobLibrary()`方法用于加载`jacob`库,`new ActiveXComponent("Word.Application")`创建了Word对象,`Dispatch.open()`打开指定路径的Word文档,`Dispatch.saveAs()`则将文档另存为HTML格式,...
在这个场景中,我们将讨论如何利用JACOB将Word文档转换为PDF。 首先,我们需要理解JACOB的工作原理。JACOB是通过Java的JNI(Java Native Interface)来调用COM接口的,这样就可以在Java代码中直接操纵COM对象,例如...
java项目, 直接导入eclipse里面或者myeclipse里面就可以运行....通过jacob插件,通过word模板自动填充相应的数据,并且产生文件,为了解决有的tomcat下会乱码, 生成完成之后会转码一下, 解决了中文乱码问题.
总结,通过结合iTextPDF和Jacob这两个库,Java开发者可以在Word文档中添加图片水印,从而实现对文档的个性化定制和保护。这种方法需要对Java、COM组件以及Word API有一定的理解,但是一旦掌握,就可以灵活地处理各种...
本篇文章将深入探讨如何利用jacob通过Word样表生成制式表格,并涉及文字替换、图片插入以及动态追加数据到表格,最后还将介绍如何将生成的Word文档转换为PDF格式。 首先,理解`jacob`库的作用至关重要。Jacob(Java...
Jacob 操作 Word 文档详解 Jacob 操作 Word 文档概述 Jacob 是一个 Java 库,用于访问和操作 Microsoft Office 应用程序,包括 Word。它提供了一个基于 COM(Component Object Model)的接口,允许 Java 应用...
以下是对利用Jacob实现Word转PDF的详细说明: 1. **Jacob库介绍**: Jacob是一个Java到COM桥接器,它使得Java开发者能够使用COM组件,如Microsoft Office的Word应用,来执行特定的任务。Jacob通过JNI(Java Native...
### jacob给Word文档添加页脚 在日常工作中,Word文档是经常被使用的工具之一,尤其是在需要编写报告、论文或专业文档时。为了使文档更加规范和专业,往往需要添加页眉、页脚等元素。其中,页脚常用于显示页码、...