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;
}
}
java jacob调用打印,word,excel横向打印的更多相关文章
- Java通过openOffice实现word,excel,ppt转成pdf实现在线预览
Java通过openOffice实现word,excel,ppt转成pdf实现在线预览 一.OpenOffice 1.1 下载地址 1.2 JodConverter 1.3 新建实体类PDFDemo ...
- Java jacob调用打印机打印word文档
前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...
- C#双面打印解决方法(打印word\excel\图片)
最近需要按顺序打印word.excel.图片,其中有的需要单面打印,有的双面.网上查了很多方法.主要集中在几个方式解决 1.word的print和excel的printout里设置单双面 2.prin ...
- Office批量打印助手(Excel 批量打印、Word 批量打印)
最新版本:1.0.6664.34636(更新日期:2018年3月31日) 下载地址:点击下载 程序简介: 本程序能批量打印 Word 文件.Excel 工作簿. 使用程序前请先安装 .NET Fra ...
- Java实现 蓝桥杯 历届试题 横向打印二叉树
问题描述 二叉树可以用于排序.其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树. 当遇到空子树时,则把该节点放入那个位置. 比如,10 8 5 7 ...
- ASP.NET中数据库数据导入Excel并打印(2)
大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的.如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码: Private Sub Page_L ...
- Jacob调用COM组件总结,实例
转自:http://blog.csdn.net/whw6_faye/article/details/5418506 最近做了一个Java Jacob调用COM组件的东西,其中遇到了不少问题,现在把经验 ...
- 12、借助Jacob实现Java打印报表(Excel、Word)
12.使用Jacob来处理文档 Word或Excel程序是以一种COM组件形式存在的.如果能够在Java中调用相应组件,便能使用它的方法来获取文档中的文本信息.Jacob是一个JAVA到微软的COM接 ...
- java调用jacob生成pdf,word,excel横向
/* * 传进一个office文件的byte[]以及后缀,生成一个pdf文件的byte[] */ public byte[] jacob_Office2Pdf(byte[] srcFileBytes, ...
随机推荐
- layui的单选框
<script type="text/html" id="radioTpl"> <input type="radio" n ...
- layui基础上的tree菜单动态渲染;
var layout=[ { title:'脚本对象名称', treeNodes:true, headerClass:'value_col', colClass:'value_col', style: ...
- COOKIE和session的机制详解
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- C# 一个长度为100的int数组,插入1-100的随机数,不能重复,如何写
int[] intArr = new int[100]; ArrayList myList = new ArrayList(); Random rnd = new Random(); while (m ...
- PHP代码审计学习之命令执行漏洞挖掘及防御
[1]可能存在命令执行漏洞的函数: 00x1:常用的命令执行函数:exec.system.shell_exec.passthru 00x2:常用的函数处理函数:call_user_func.call_ ...
- ExtPager ,分页
package cn.edu.hbcf.common.vo; public class ExtPager { private Integer start; private Integer limit; ...
- ubuntun 下安装 node-v0.10.26
sudo apt-get install g++ curl libssl-dev apache2-utils wget http://nodejs.org/dist/v0.10.26/node-v0. ...
- 8237dma的四种传送方式简介
8237A有四种工作方式:单字节传送.数据块传送.请求传送和多片级联. (1)单字节传送(single mode) 单字节传送方式是每次DMA传送时,仅传送一个字节.传送一个字节之后,当前字节计数器减 ...
- 为什么 MongoDB 连接数被用满了?
使用 MongoDB 时,可能会遇到因为 mongod 连接数用满了,导致客户端无法连接的问题.mongod的最大连接数通过 net.maxIncomingConnections 指定,默认值为100 ...
- jquery 改变checkbox的值
似乎没什么用... <script> $(document).ready(function(){ $("#comment").change(function(){ va ...