zoukankan      html  css  js  c++  java
  • 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;
      }
     }

  • 相关阅读:
    实现Callable接口(了解即可)
    多线程模拟龟兔赛跑
    多线程操作同一个对象的例子(引出并发)
    实现Runnable和Thread类的区别(建议使用Runnable)
    Autel MaxiIM IM608:如何更新和一些评论
    VIDENT iSmart900自动多系统扫描工具OBDII支持ABS / SRS / EPB /传输诊断DPF再生/上油复位编码电池配置
    2019 Red PCB KESS V5.017:支持140协议
    V2018.5 MB SD C4功能和软件详细信息更新
    (已解决)FVDI 2018“连接到服务器.....失败”“打不开设备”
    燕化迷你ACDP程序FEM / BDC
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6743404.html
Copyright © 2011-2022 走看看