我使用jacob将excel另存为pdf格式,怎么才能转换整个工作簿另存为pdf,只能存当前活动sheet,代码如下Dispatch sheet = Dispatch.invoke(sheets, "Item", Dispatch.Get,
new Object[] { new Integer(1) }, new int[1]).toDispatch();
// String sheetname = Dispatch.get(sheet, "name").toString();
Dispatch.call(sheet, "Activate");//指定活动sheet
Dispatch.call(sheet, "Select");
int excelToPdf = 57;
Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {
outFile, new Variant(excelToPdf), new Variant(true),
new Variant(excelToPdf), new Variant(excelToPdf),
new Variant(true), new Variant(true),
new Variant(excelToPdf), new Variant(true),
new Variant(true), new Variant(true) }, new int[1]);
Dispatch.call(excel, "Close", new Variant(false));
100分跪求,来大神解决

解决方案 »

  1.   

    ExcelAction里"SaveAs"这个方法默认另存为是只保存当前活动sheet,怎么保存所有sheet?
      

  2.   


    Dispatch.call(sheet, "Activate");//指定活动sheet
    这句你是指定了活动的sheet,所以只保存了当前活动的sheet。试试下面这样呢
    ActiveXComponent app = new ActiveXComponent("Excel.Application"); 
     Dispatch excels = app.getProperty("Workbooks").toDispatch();
    Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[]
      

  3.   


    Dispatch.call(sheet, "Activate");//指定活动sheet
    这句你是指定了活动的sheet,所以只保存了当前活动的sheet。试试下面这样呢
    ActiveXComponent app = new ActiveXComponent("Excel.Application"); 
     Dispatch excels = app.getProperty("Workbooks").toDispatch();
    Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[]
     试了下,不指定就是默认第一个sheet...
      

  4.   


    Dispatch.call(sheet, "Activate");//指定活动sheet
    这句你是指定了活动的sheet,所以只保存了当前活动的sheet。试试下面这样呢
    ActiveXComponent app = new ActiveXComponent("Excel.Application"); 
     Dispatch excels = app.getProperty("Workbooks").toDispatch();
    Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[]
     试了下,不指定就是默认第一个sheet...???????????你的代码是不是贴的不全。。
      

  5.   

    没有直接办法解决,但是最终实现了,主要思路:遍历sheet保存多个pdf文件,通过itextpdf再将这多个PDF合成一个,效率偏低不过能够实现