本帖最后由 andh1222 于 2014-10-30 15:26:15 编辑

解决方案 »

  1.   

    呵呵,不清楚;不过我都是自己写的一个Excel转PDF的。我没做过Word转PDF。
      

  2.   

    Excel转PDF 用过 word 没试过 。你看看服务器 32 ,还是64 。
      

  3.   

    服务器是64位的。
    使用了jacob-1.18-M2-64.dll在Tomcat中发布,Word,Excel都可以导出pdf
    在WebSphere中发布,Word可以,Excel不行。Excel.exe进程不执行了。
    很奇怪的问题,分析不出原因。
      

  4.   

    因为WebSphere 使用的是IBM的jdk,很有可能是这个问题,而且从报错信息看,是Native Method
      

  5.   

    错误就在下面这句处理上
    Dispatch.call(office, OFFICE_EXPORT, xlTypePDF, pdfFile);
    //OFFICE_EXPORT = "ExportAsFixedFormat";我在WebSphere中测试了,将这句屏蔽,代码就通过了。
    本地测试到这句处理的时候,会弹出Excel的进度条显示效果。初步怀疑是WebSphere服务器中调用Excel有冲突。
    还在调查中没有什么头绪啊。
      

  6.   

    简化了一下测试代码   
       ComThread.InitSTA();
        ActiveXComponent app = new ActiveXComponent("Excel.Application");
        app.setProperty("Visible", false);
        Dispatch offices = app.getProperty("Workbooks").toDispatch();
        Dispatch office = Dispatch.call(offices, "Open", inputFile, false, true).toDispatch();
        // 修改了如下方式保存 ↓
        Dispatch.invoke(office, "SaveAs", pdfFile, new Variant(57));
        Dispatch.call(office, "Close", false);
        app.invoke("Quit");
        ComThread.Release();测试发生了下面的错误:
    com.jacob.com.ComFailException: Invoke of: SaveAs
    Source: Microsoft Excel
    Description: 没有安装打印机。服务器上已经安装了虚拟打印机,但是仍然提示这个错误。
    有谁碰到过这种打印机引起的问题吗?
      

  7.   

    你去google  上面找找答案看看。WebSphere  上没用过。我 本地 main 方法,excel  word 转都可以。
      

  8.   

    google访问不了。
    我本地,Tomcat都OK,就是在WebSphere上失败了。
    郁闷啊。
      

  9.   

    今天继续测试了一下SaveAs方法
        // 18,39,56:xls 2,10:slk 3:txt 6:csv 9:dif 17:xlt 36:prm
        // 44:htm 45:mht 46:xml 50:xlsb 12,51:xlsx 52:xlsm 53:xltm
        // 54:xltx 55:xlam 57:pdf 58:xps 60:ods
        Dispatch.call(office, "SaveAs", pdfFile, xlsType);
    在Tomcat服务中,上面哪些文件都可以转换成功。
    在WebSphere服务中,57:pdf 58:xps 转换失败,其余的都转换成功。现在怀疑两个方向。
    1. Websphere与Adobe Reader接口发生了问题。
    2. Server2008上的虚拟打印机不支持Pdf,Xps印刷。继续调查
      

  10.   

    终于解决了这个困扰我两周的问题了。
    与Was服务器没有关系,就是Excel访问权限的问题。
    安装Office2010后,Excel默认访问方式是【启动用户】,Word默认访问方式是【交互式用户】
    难怪Word可以转换,Excel不能访问呢。修改Excel的访问方式:【The launching user】->【The interactive user】
    下面两种保存Excel的方法都OK了。
    ① Dispatch.call(office, "ExportAsFixedFormat", 0, pdfFile);
    ② Dispatch.call(office, "SaveAs", pdfFile, 57);方法①可以保存Excel的全部sheet,但是只能保存成0:pdf与1:xps两种类型文件,推荐使用。
    方法②只能保存Excel的当前sheet,但是可以通过最后一个参数,保存成各种不同类型的文件(csv,xps,xls,html等)。
    // 1,18,39,56:xls 2,10:slk 3:txt 6:csv 9:dif 17:xlt 36:prm
    // 44:htm 45:mht 46:xml 50:xlsb 12,51:xlsx 52:xlsm
    // 53:xltm 54:xltx 55:xlam 57:pdf 58:xps 60:ods
      

  11.   

    启动
    print spooler 服务