java jacob excel转pdf 解决多sheet时只转换当前sheet的问题

package com.zc.epe.common.util;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class TransferTool {
 public static void els2pdf(String els,String pdf){
     System.out.println("Starting excel...");  
     ComThread.InitSTA();
        long start = System.currentTimeMillis();  
        ActiveXComponent app = new ActiveXComponent("Excel.Application"); 
        
        try {  
         app.setProperty("Visible",false);  
         Dispatch workbooks = app.getProperty("Workbooks").toDispatch();  
         System.out.println("opening document:" + els);  
         Dispatch workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method,
           new Object[]{els, new Variant(false),
           new Variant(false)}, new int[3]).toDispatch();
     Dispatch sheets = Dispatch.get(workbook,"Worksheets").toDispatch();
     Dispatch.call(sheets, "Select");
         Dispatch.invoke(workbook, "SaveAs", Dispatch.Method,
             new Object[] {  
              pdf, new Variant(57), new Variant(false),  
              new Variant(57), new Variant(57), new Variant(false),  
              new Variant(true), new Variant(57), new Variant(true),  
              new Variant(true), new Variant(true) }, 
             new int[1]);  
         Variant f = new Variant(false);  
         System.out.println("to pdf " + pdf);  
         Dispatch.call(workbook, "Close", f);  
         long end = System.currentTimeMillis();  
         System.out.println("completed..used:" + (end - start)/1000 + " s");  
        } catch (Exception e) {  
            System.out.println("========Error:Operation fail:" + e.getMessage());  
        }finally {
         //删除生成的excel文件
        //new File(els).delete();
            if (app != null){  
                app.invoke("Quit", new Variant[] {});  
            }  
        }  
        ComThread.Release();
 }  



public static void main(String[] args) {
 els2pdf("‪F:\\xx(20180119).xls","‪F:\\xxx(20180119).pdf");

}
}

关键代码见上面表黄色的部分

关键思路 :

jacob是用dll模拟vba代码操作excel,那么可以用vba的语法加上jacob的操作方式进行操作

具体语法参考别人的博客

jacob操作excel、word、AutoCAD分享_PeachShui的博客-CSDN博客

先选择sheet然后另存为,就绕过了对象参数设置(参数设置没看懂.找起来麻烦.).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值