jcob操作Excel文档,并且调用打印机打印(Excel导出是用POI)

来源:互联网 发布:淘宝没有指纹支付选项 编辑:程序博客网 时间:2024/06/08 10:47
//这个是我自己写的public void printOrderAll() {ComThread.InitSTA();ActiveXComponent xl = new ActiveXComponent("Excel.Application");String path="E:/xxxx.xls";try {// System.out.println("version=" + xl.getProperty("Version"));//不打开文档Dispatch.put(xl, "Visible", new Variant(true));Dispatch workbooks = xl.getProperty("Workbooks").toDispatch();//打开文档Dispatch excel=Dispatch.call(workbooks,"Open",path).toDispatch();//开始打印Dispatch.get(excel,"PrintOut");Thread.sleep(30000);//这一句可以不要Dispatch.call(workbooks, "Close",new Variant(false));//关闭打开的Excel} catch (Exception e) {e.printStackTrace();} finally {//始终释放资源xl.invoke("Quit", new Variant[] {}); ComThread.Release();}}

这个是我参考别人的综合的

package cn.com.cisec.hnjt.test;import com.jacob.activeX.ActiveXComponent;import com.jacob.com.ComThread;import com.jacob.com.Dispatch;import com.jacob.com.Variant;/** *  * @作者 刘仁 * * @2013年 *//* *  Excel是常用的报表格式,一般系统中要求生成报表,多半都是使用Excel格式。 *  在Java中操作Excel可以使用JavaExcel(jxl)或poi,大部分常用的功能都能实现, *  也很方便,但生成好的报表只能下载后才能查看或要确认一下后才能打开,感觉不是很友好。             *  尝试寻找一个可以将生成好的Excel报表转换成Html的工具,经过查找只有一个叫 Jacob 的组建可以很好的实现这个功能 *  ,主站地址如下:http://sourceforge.net/projects/jacob-project/ , *  已经将两个版本的 jacob 包都放到常用工具包下载区了,大家可以在那里下载到。               *  Jacob 是通过Java 的JNI 调用本地的Com接口,也就是说,最终操作Excel、Word的还是你本地机器上的Office组件, *  Jacob只是提供了一个调用的桥接而已,这也就限定了jacob只能在windows的操作系统上应用,并且该系统必须也已经安装了Office组件。              *  目前常用的版本有两个, V1.9 和 V1.15 M3 ,每个版本都有自己附带的 jacob.jar 和 jacob.dll 两种文件 ,在 1.15 M3  *  的版本中还针对32位和64位的机器做了不同的实现,在使用的时候一定要注意 jar 和 dll要配合相同的版本使用。              *  使用Jacob 过程中比较普遍的一个问题是无法找到对应的 jacob,dll ,根据系统的提示应该放在 java.libray.path 下, *  这个目录对应操作系统的 Path 环境变量中的任何一个目录中,但在实际应用中有时候还是会出现无法找到 dll 的错误,最终尝试了一个方法, *  将 dll放置到jre的bin中,这样无论是在本地调用,还是在web容器中调用都不会出错,当然你的web容器使用的必须是你放了dll的jre。              *  还有一个关键问题需要注意,就是当你通过 jacob 对word、excel 等文件操作的时候一定要注意释放资源,尤其是考虑异常发生的时候要释放资源, *  否则会在你的系统中遗留一个进程,慢慢的会使你的系统崩溃(在server环境中)。           *  下面是一段调用 Jacob 实现打开一个Excel文件,然后调用另存功能实现Excel到Html文件转换的例子。 */public class DaYin {/** * 调用 Com 转换Excel */private void callComConvert() {// 初始化ComThread.InitSTA();// 构建 ActiveX 容器ActiveXComponent activex = new ActiveXComponent("Excel.Application");try {activex.setProperty("Visible", new Variant(false));Object workbooks = activex.getProperty("Workbooks").toDispatch();// 以只读方式打开Excel文件Object workbook = Dispatch.invoke((Dispatch) workbooks,"Open",Dispatch.Method,new Object[] { this._fExcelFile.getPath(),new Variant(false), new Variant(true) },// 是否以只读方式打开new int[1]).toDispatch();// 执行Excel的另存操作Dispatch.invoke((Dispatch) workbook, "SaveAs", Dispatch.Method,new Object[] { this._fHtmlFile.getPath(),new Variant(44) }, new int[1]); // 44,45// 执行文件关闭操作,释放文件资源 Dispatch.call((Dispatch) workbook, "Close", new Variant(false));} catch (Throwable e) {e.printStackTrace();throw new HITBRuntimeException ( "ComConvert.UnknowException", e ) ;} finally {// 释放 Com资源activex.invoke("Quit", new Variant[] {});//该句是关闭Excel进程的ComThread.Release();}}}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗腿关节断了怎么办 五岁儿童抵抗力差怎么办 3岁儿童抵抗力差怎么办 四岁儿童抵抗力差怎么办 我孩子和我相冲怎么办 儿子不热母亲怎么办?单身呀? 大兔子吃小兔子怎么办 车窗贴膜里面有灰尘怎么办 陌陌小游戏不能玩游戏怎么办 电脑游戏里面的出现俄文怎么办 龙之谷手游转职业装备怎么办 如果函数值和类型不一致怎么办 qq提现不到账怎么办 提现的钱不到账怎么办 联璧金融提现不到账怎么办 孕早期拉稀拉水怎么办 兔子嘴巴摔烂了怎么办 猫咪耳朵里有黑的东西怎么办 兔子的腿骨折了怎么办 德牧耳朵立不起来怎么办 童鞋魔术贴太长了怎么办? 许昌国贸360手机没电怎么办 滴滤油膜泡泡不破怎么办 商铺转让不出去怎么办 手机导航gps信号弱怎么办 卖家收到退货有破损怎么办 手办寄快递盒子坏了怎么办 淘宝收到衣服破损的怎么办 收到的快递少了怎么办 快递寄东西坏了怎么办 发快递东西坏了怎么办 寄快递东西碎了怎么办 手机全成英文了怎么办 冲好的奶粉结块怎么办 糖有点化了怎么办弄干 猪拉黑色稀粪便怎么办 盆栽花用肥多了怎么办 辊底式退火炉出炉温度高怎么办 黑枸杞长霉了怎么办 被子睡久了发黄怎么办 丝棉被淋了雨怎么办呢?