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

  • 相关阅读:
    C#调用存储过程带输出参数或返回值
    车辆售票坐位图
    C#操作SQL Server通用类
    Java基础知识总结
    Maven 安装与配置
    读取文件内容
    复制一个文件
    求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
    输入一个递增的顺序排序的二维数组和一个整数,判断数组中是否含有该整数
    在由N个元素构成的集合S中,找出最小元素C,满足C=A-B,其中A,B是都集合S中的元素,没找到则返回-1
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6743404.html
Copyright © 2020-2023  润新知