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

jzssuanfa 2021-12-01 原文


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;
  }
 }

发表于
2017-04-21 14:20 
jzssuanfa 
阅读(728
评论(0
编辑 
收藏 
举报

 

版权声明:本文为jzssuanfa原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jzssuanfa/p/6743404.html

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

  1. 剖析云计算技术及架构(3 云存储 补充) – java线程例子

    剖析云计算技术及架构(3 云存储 补充) 2011-12-20 22:06  java线程例子  阅读(164 […]...

  2. 打造设计师的“第二张脸”:25个精选作品集网站赏析 – jongde

    打造设计师的“第二张脸”:25个精选作品集网站赏析 如何做出一个好的个人作品集网站呢?别着急,小摹为大家精选了 […]...

  3. kindle电子书下载搜索 – 季枫

    kindle电子书下载搜索 https://sokindle.com/ https://sobooks.cc/...

  4. 给数据连接池抛出的 connection holder is null新增解决方案

    给数据连接池抛出的 connection holder is null新增解决方案 最近在做Java后台的项目 […]...

  5. Effective Java – 构造器私有、枚举和单例

    目录 饿汉式单例 静态常量 静态代码块 懒汉式单例 尝试加锁 同步代码块 双重检查 静态内部类单例 枚举单例 […]...

  6. Java I/O流详解与应用(二)

    I/O流(二)   一.缓冲流(缓冲区): 特点:本身没有读写的能力,需要借助普通的读写流进行读写,但可以加快 […]...

  7. Java7 新特性 —— java.nio.file 文件操作

    本文部分摘自 On Java 8 自 Java7 开始,Java 终于简化了文件读写的基本操作,新增了 jav […]...

  8. HBase连接数据库(集群) – SunnyCx

    HBase连接数据库(集群) 一.使用java接口对hbase进行表的创建1.引入需要的jar包2.代码: p […]...

随机推荐

  1. LeetCode通关:栈和队列六连,匹配问题有绝招

    刷题路线参考: https://github.com/chefyuan/algorithm-base http […]...

  2. 浅谈 SSD,eMMC,UFS(转自知乎) – 张凌001

    浅谈 SSD,eMMC,UFS(转自知乎) 但作为一个计算机体系结构的研究生,在这些名词满天飞的时候,我的好奇 […]...

  3. 死磕 java同步系列之AQS终篇(面试)

    问题 (1)AQS的定位? (2)AQS的重要组成部分? (3)AQS运用的设计模式? (4)AQS的总体流程 […]...

  4. 章节九、5-IE Driver

    一、下载IE浏览器驱动,然后解压到存放谷歌和火狐驱动的相同路径中(请观看前面的章节) 下载地址一:http:/ […]...

  5. 美团外卖客户端高可用建设体系 – 美团技术团队

    美团外卖客户端高可用建设体系 背景 美团外卖从2013年11月开始起步,经过数年的高速发展,一直在不断地刷新着 […]...

  6. vim 列编辑模式

    vim 有三种编辑模式,命令模式、输入模式、视窗模式,我们常用的是前两种模式,但是视窗模式还是非常不错的,进入 […]...

  7. ASP程序测试 – 软件下载园

    ASP程序测试 ASP程序测试内容...

  8. 快速使用excel vba脚本进行数据的快速分析

      用excel自带的vba编辑器可以方便地进行数据分析,很多仪表仪器保存数据的格式都是excel文本。常用e […]...

展开目录

目录导航