1. public static boolean printOfficeFile(File f) {
  2. if (f != null && f.exists()) {
  3. String fileNameString = f.getName();
  4. String postfixString = Utils.getPostfix(fileNameString);
  5. if (postfixString.equalsIgnoreCase("xls")
  6. || postfixString.equalsIgnoreCase("xlsx")) {
  7. /**
  8. * 功能:实现excel打印工作
  9. */
  10. ComThread.InitSTA();
  11. ActiveXComponent xl = new ActiveXComponent("Excel.Application");
  12. try {
  13. // System.out.println("version=" +
  14. // xl.getProperty("Version"));
  15. // 不打开文档
  16. Dispatch.put(xl, "Visible", new Variant(false));
  17. Dispatch workbooks = xl.getProperty("Workbooks")
  18. .toDispatch();
  19. // 打开文档
  20. Dispatch excel = Dispatch.call(workbooks, "Open",
  21. f.getAbsolutePath()).toDispatch();
  22. // 横向打印(2013/05/24)
  23. // Dispatch currentSheet = Dispatch.get(excel, "ActiveSheet")
  24. // .toDispatch();
  25. // Dispatch pageSetup = Dispatch
  26. // .get(currentSheet, "PageSetup").toDispatch();
  27. // Dispatch.put(pageSetup, "Orientation", new Variant(2));
  28. //每张表都横向打印2013-10-31
  29. Dispatch sheets = Dispatch.get((Dispatch) excel, "Sheets")
  30. .toDispatch();
  31. // 获得几个sheet
  32. int count = Dispatch.get(sheets, "Count").getInt();
  33. // System.out.println(count);
  34. for (int j = 1; j <=count; j++) {
  35. Dispatch sheet = Dispatch.invoke(sheets, "Item",
  36. Dispatch.Get, new Object[] { new Integer(j) },
  37. new int[1]).toDispatch();
  38. Dispatch pageSetup = Dispatch.get(sheet, "PageSetup").toDispatch();
  39. Dispatch.put(pageSetup, "Orientation", new Variant(2));
  40. Dispatch.call(sheet, "PrintOut");
  41. }
  42. // 開始打印
  43. if (excel != null) {
  44. //Dispatch.call(excel, "PrintOut");
  45. //添加下面三行代码解决文件无法删除bug
  46. Dispatch.call(excel, "save");
  47. Dispatch.call(excel, "Close" , new Variant(true));
  48. excel=null;
  49. }
  50. xl.invoke("Quit", new Variant[] {});
  51. xl=null;
  52. return true;
  53. } catch (Exception e) {
  54. e.printStackTrace();
  55. return false;
  56. } finally {
  57. // 始终释放资源
  58. ComThread.Release();
  59. }
  60. } else if (postfixString.equalsIgnoreCase("doc")
  61. || postfixString.equalsIgnoreCase("docx")) {
  62. ComThread.InitSTA();
  63. ActiveXComponent wd = new ActiveXComponent("Word.Application");
  64. try {
  65. // 不打开文档
  66. Dispatch.put(wd, "Visible", new Variant(false));
  67. Dispatch document = wd.getProperty("Documents")
  68. .toDispatch();
  69. // 打开文档
  70. Dispatch doc = Dispatch.invoke(document, "Open",
  71. Dispatch.Method, new Object[] { f.getAbsolutePath() },
  72. new int[1]).toDispatch();
  73. // 開始打印
  74. if (doc != null) {
  75. Dispatch.call(doc, "PrintOut");
  76. //添加下面三行代码解决文件无法删除bug
  77. Dispatch.call(doc, "save");
  78. Dispatch.call(doc, "Close" , new Variant(true));
  79. doc=null;
  80. }
  81. wd.invoke("Quit", new Variant[] {});
  82. wd=null;
  83. return true;
  84. } catch (Exception e) {
  85. e.printStackTrace();
  86. return false;
  87. } finally {
  88. // 始终释放资源
  89. ComThread.Release();
  90. }
  91. } else {
  92. return false;
  93. }
  94. } else {
  95. return false;
  96. }
  97. }

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

  1. Java通过openOffice实现word,excel,ppt转成pdf实现在线预览

    Java通过openOffice实现word,excel,ppt转成pdf实现在线预览 一.OpenOffice 1.1 下载地址 1.2 JodConverter 1.3 新建实体类PDFDemo ...

  2. Java jacob调用打印机打印word文档

    前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...

  3. C#双面打印解决方法(打印word\excel\图片)

    最近需要按顺序打印word.excel.图片,其中有的需要单面打印,有的双面.网上查了很多方法.主要集中在几个方式解决 1.word的print和excel的printout里设置单双面 2.prin ...

  4. Office批量打印助手(Excel 批量打印、Word 批量打印)

    最新版本:1.0.6664.34636(更新日期:2018年3月31日) 下载地址:点击下载  程序简介: 本程序能批量打印 Word 文件.Excel 工作簿. 使用程序前请先安装 .NET Fra ...

  5. Java实现 蓝桥杯 历届试题 横向打印二叉树

    问题描述 二叉树可以用于排序.其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树. 当遇到空子树时,则把该节点放入那个位置. 比如,10 8 5 7 ...

  6. ASP.NET中数据库数据导入Excel并打印(2)

    大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的.如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码:      Private Sub Page_L ...

  7. Jacob调用COM组件总结,实例

    转自:http://blog.csdn.net/whw6_faye/article/details/5418506 最近做了一个Java Jacob调用COM组件的东西,其中遇到了不少问题,现在把经验 ...

  8. 12、借助Jacob实现Java打印报表(Excel、Word)

    12.使用Jacob来处理文档 Word或Excel程序是以一种COM组件形式存在的.如果能够在Java中调用相应组件,便能使用它的方法来获取文档中的文本信息.Jacob是一个JAVA到微软的COM接 ...

  9. java调用jacob生成pdf,word,excel横向

    /* * 传进一个office文件的byte[]以及后缀,生成一个pdf文件的byte[] */ public byte[] jacob_Office2Pdf(byte[] srcFileBytes, ...

随机推荐

  1. Qt pro文件语法

    在Qt下做开发的时候.pro文件就是工程的配置文件,虽然很多时候里面的选项是工具自动生成的,但是难免会需要手动修改的时候,下面就记录一下它的基本语法 #:在.pro文件中表示注释,注释当前行 TEMP ...

  2. Android实例-IdHTTP下载(并实现自动安装)(XE10+小米2)

    相关资料: 1.群号 383675978 2.运行时提示"connection closed gracefully"错误原因与解决 http://www.delphifans.co ...

  3. ecmall的物流配送体系改造

    接触多了ecshop.ecmall原始逻辑的,一般都习惯以整单的方式统一计算运费,这是一种很简单的思路. 但淘宝多了,就发现,物流运费没有那么简单. 首先,每种商品单独设置运费的体系,或者叫运费模板: ...

  4. BZOJ2820 YY的GCD 莫比乌斯+系数前缀和

    /** 题目:BZOJ2820 YY的GCD 链接:http://www.cogs.pro/cogs/problem/problem.php?pid=2165 题意:神犇YY虐完数论后给傻×kAc出了 ...

  5. 简单解决Ubuntu修改locale的问题

      本文针对的问题是“Ubuntu 安装中文语言包”“Ubuntu Server中文问题”,“Ubuntu更改语言环境”,“Ubuntu locale的设定”,“cannot change local ...

  6. Android控件——7种形式的Android Dialog使用举例(转载)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一 ...

  7. Centos7安装Apache Http服务器无法访问如何解决

    1. 安装Apache组件 [root@mycentos shell]# yum install httpd 2. 安装成功后,检测有无httpd进程 [root@mycentos shell]# p ...

  8. web中用纯CSS实现筛选菜单

    web中用纯CSS实现筛选菜单 本文我们来用纯css实现像淘宝宝贝筛选菜单那样的效果,例子虽然没有淘宝那样强大,不过原理差不多,如果花点心思也可以实现和淘宝一样的. 内容过滤是一个在Web上常见的一个 ...

  9. win10执行shell脚本

    我们在win10如何执行以.sh文件的脚本呢? 开发步骤:1.写脚本b2q_goods.sh #!/bin/bashsql="select * from b2q.goods where go ...

  10. 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据

    1:跨域请求handler一般处理程序 using System; using System.Collections.Generic; using System.Web; using System.W ...