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;
      }
     }
  • 相关阅读:
    为何总是在无聊的事中浪费生命
    Objective-C Polymorphism
    [MONGODB]: WHEN ARBITER REQUIRED FOR REPLICA SET
    巴菲特已四度战胜股灾 称A股长期仍将向上(2015年09月14日)
    visual studio 2012 has stopped working
    [2015-04-17] 2015年的股市比2008年还危险……
    Using HiveServer2
    有了Hadoop MapReduce, 为什么还要Spark?
    HIVE: Map Join Vs Common Join, and SMB
    ORA-12170:TNS:连接超时
  • 原文地址:https://www.cnblogs.com/hold/p/3399626.html
Copyright © 2011-2022 走看看