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

 

posted @ 2013-10-31 16:50  郑小明  阅读(6223)  评论(0编辑  收藏  举报