java jacob调用打印,word,excel横向打印

public static boolean printOfficeFile(File f) {
  if (f != null && f.exists()) {
   String fileNameString = f.getName();
   String postfixString = Utils.getPostfix(fileNameString);
   if (postfixString.equalsIgnoreCase("xls")
     || postfixString.equalsIgnoreCase("xlsx")) {
    /**
     * 功能:实现excel打印工作
     */
    ComThread.InitSTA();
    ActiveXComponent xl = new ActiveXComponent("Excel.Application");
    try {
     // System.out.println("version=" +
     // xl.getProperty("Version"));
     // 不打开文档
     Dispatch.put(xl, "Visible", new Variant(false));
     Dispatch workbooks = xl.getProperty("Workbooks")
       .toDispatch();
     // 打开文档
     Dispatch excel = Dispatch.call(workbooks, "Open",
       f.getAbsolutePath()).toDispatch();
     // 横向打印(2013/05/24)
//     Dispatch currentSheet = Dispatch.get(excel, "ActiveSheet")
//       .toDispatch();
//     Dispatch pageSetup = Dispatch
//       .get(currentSheet, "PageSetup").toDispatch();
//     Dispatch.put(pageSetup, "Orientation", new Variant(2));
     //每张表都横向打印2013-10-31
     Dispatch sheets = Dispatch.get((Dispatch) excel, "Sheets")
       .toDispatch();
     // 获得几个sheet
     int count = Dispatch.get(sheets, "Count").getInt();
//     System.out.println(count);
     for (int j = 1; j <=count; j++) {
      Dispatch sheet = Dispatch.invoke(sheets, "Item",
        Dispatch.Get, new Object[] { new Integer(j) },
        new int[1]).toDispatch();
      Dispatch pageSetup = Dispatch.get(sheet, "PageSetup").toDispatch();
      Dispatch.put(pageSetup, "Orientation", new Variant(2));
      Dispatch.call(sheet, "PrintOut");
     }
     // 开始打印
     if (excel != null) {
      //Dispatch.call(excel, "PrintOut");
      //增加以下三行代码解决文件无法删除bug
      Dispatch.call(excel, "save");
      Dispatch.call(excel,  "Close" ,  new  Variant(true));
      excel=null;
     }
     xl.invoke("Quit", new Variant[] {});
     xl=null;
     return true;
    } catch (Exception e) {
     e.printStackTrace();
     return false;
    } finally {
     // 始终释放资源
     ComThread.Release();
    }
   } else if (postfixString.equalsIgnoreCase("doc")
     || postfixString.equalsIgnoreCase("docx")) {
    ComThread.InitSTA();
    ActiveXComponent wd = new ActiveXComponent("Word.Application");
    try {
     // 不打开文档
     Dispatch.put(wd, "Visible", new Variant(false));
     Dispatch document = wd.getProperty("Documents")
       .toDispatch();
     // 打开文档
     Dispatch doc = Dispatch.invoke(document, "Open",
       Dispatch.Method, new Object[] { f.getAbsolutePath() },
       new int[1]).toDispatch();
     // 开始打印
     if (doc != null) {
      Dispatch.call(doc, "PrintOut");
      //增加以下三行代码解决文件无法删除bug
      Dispatch.call(doc, "save");
      Dispatch.call(doc,  "Close" ,  new  Variant(true));
      doc=null;
     }
     wd.invoke("Quit", new Variant[] {});
     wd=null;
     return true;
    } catch (Exception e) {
     e.printStackTrace();
     return false;
    } finally {
     // 始终释放资源
     ComThread.Release();
    }
   } else {
    return false;
   }
  } else {
   return false;
  }
 }

时间: 2024-10-07 03:07:17

java jacob调用打印,word,excel横向打印的相关文章

Java jacob调用打印机打印word文档

前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制比不成熟完整.网上的代码也是千篇一律,在我的打印设备Canon iR2525/2530 UFRII LT上,我能获取到打印机的各属性,当前任务数.但是打印机没反应. 可参考这两篇文章: http://www.360doc.com/content/05/0916/11/332_12789.shtml http://www.ibm.com/devel

Office批量打印助手(Excel 批量打印、Word 批量打印)

最新版本:1.0.6664.34636(更新日期:2018年3月31日) 下载地址:点击下载  程序简介: 本程序能批量打印 Word 文件.Excel 工作簿. 使用程序前请先安装 .NET Framework 4.0 或  .NET Framework 4.0 Client Profile 如果觉得程序好用,请打赏作者.我为人人,人人为我. 在主界面的"其他"-->"关于"--"打赏"或看到打赏途径.  更新记录: 版本号 1.0.66

在Java中如何操作word, excel, pdf文件

java操作word,excel,pdf 在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-

Jacob调用COM组件总结,实例

转自:http://blog.csdn.net/whw6_faye/article/details/5418506 最近做了一个Java Jacob调用COM组件的东西,其中遇到了不少问题,现在把经验总结一下和大家分享. 1.Jacob安装 Google一下,下载Jacob最新版.我这里用的是Jacob-1.15 把Jacob.jar放到你Java工程的lib目录下,引入项目 Jacob自带了两个dll, jacob-1.15-M3-x64.dll 和jacob-1.15-M3-x86.dll,

使用jacob打印word或excel

在看PDF打印的时候顺便也看了看word和excel的打印,这里只简单的知道如何使用,原理没有深究~ 首先这里只说打印,至于生成word或者excel,可以使用poi(jacob貌似也可以) JACOB是一个 JAVA到微软的COM接口的桥梁.使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象.如果你要对 MS Word.Excel 进行处理,JACOB 是一个好的选择. 而关于打印的话,总结起来有这么几个步骤. 1.使用Jacob创建 ActiveX部件对象:

算法笔记_189:历届试题 横向打印二叉树(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 二叉树可以用于排序.其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树. 当遇到空子树时,则把该节点放入那个位置. 比如,10 8 5 7 12 4 的输入顺序,应该建成二叉树如下图所示,其中.表示空白. ...|-1210-|...|-8-|.......|...|-7.......|-5-|...........|-4 本题目要求:根据已知的数字,建立排序二叉树,并在标准输出中横

批量横向打印Excel

使用VBA脚本写的,具体使用如下:在批量需要打印的Excel文档下面,新建一个文档,将代码粘贴VBA工程里,然后运行即可. 具体代码如下: Attribute VB_Name = "模块1" Sub PiLiangPring() Attribute PiLiangPring.VB_ProcData.VB_Invoke_Func = " \n14" Dim curPath As String curPath = ThisWorkbook.Path & &quo

Java 打印Word文档

本文介绍如何在Java程序中通过物理打印机和虚拟打印机来打印Word文档的方法.文中使用了类库Spire.Doc for Java,可通过官网下载jar文件并导入程序或者直接通过maven仓库安装导入. [示例1]通过物理打印机打印 import com.spire.doc.Document; import com.spire.ms.System.Drawing.Printing.PrinterSettings; public class PrintWord { public static vo

[转]Java Jacob操作Excel

Jacob项目:https://sourceforge.net/projects/jacob-project/ 转自:https://blog.csdn.net/ZY_extreme/article/details/80019009 转自:http://www.360doc.com/content/14/0310/11/12385684_359224303.shtml 转自:https://blog.csdn.net/ZY_extreme/article/details/80007232 转自: