一种纯Java的
一种是用JNI去Call微软的MSXML PARSER。因为MSXML是基于COM组件技术的,很好用的

解决方案 »

  1.   

    楼上的大哥,拜托说清楚些啊,两种方法分别怎么实现,最好是纯java的方法,MSXML确实好用,不过老板估计不会答应,因为部署上肯定会提意见,但是我还是想知道具体怎么做,上网搜了半天,没发现什么有参考价值的,拜托了
      

  2.   

    先给你一个JNI的方法吧
    去下载一个免费的Jacob.jar吧,网上很多,是专门Java-com的桥
    用法很简单的,给你一段操作Word的例子吧。
    import com.jacob.com.*;
    import com.jacob.activeX.*;
    ActiveXComponent com;

    try {
    com=new ActiveXComponent("Word.Application");
    com.setProperty("Visible", new Variant(false));

    // OLE: set the default printer
    if (uncName!=null && uncName.length()>0) {
    com.setProperty("ActivePrinter", new Variant(uncName));
    writeLog(out, clientID+" Word set active printer to:  "+uncName);
    } Object documents=com.getProperty("Documents").toDispatch();
    Dispatch.call(documents,"Open",filename);
    writeLog(out, clientID+" client's file has been opened:  "+filename); // PrinterTrays
    int lvFrontPageTray=0;
    int lvDefaultTray=0;

    if (frontPageTray!=null && frontPageTray.length()>0) {
    lvFrontPageTray=Integer.parseInt(frontPageTray);
    }

    if (defaultTray!=null && defaultTray.length()>0) {
    lvDefaultTray=Integer.parseInt(defaultTray);
    }

    Object ActiveDoc = com.getProperty("ActiveDocument").toDispatch();
    Object PageSetup = Dispatch.get(ActiveDoc, "PageSetup").toDispatch();

    Dispatch.put(PageSetup, "FirstPageTray", new Variant(lvFrontPageTray));
    writeLog(out, clientID+" Word set FirstPageTray to:  "+lvFrontPageTray);

    Dispatch.put(PageSetup, "OtherPagesTray", new Variant(lvDefaultTray));
    writeLog(out, clientID+" Word set OtherPagesTray to:  "+lvDefaultTray);
    com.invoke("PrintOut", new Variant[] {new Variant(false)});
    writeLog(out, clientID+" client's file has sent to the printer"); Dispatch.call(ActiveDoc, "Save");
    writeLog(out, clientID+" client's file has been saved.");

    // Quite Microsoft Word
    com.invoke("Quit", new Variant[] {});
    writeLog(out, clientID+" client's word application has requested to quit");
    } catch (Throwable e) {
    writeLog(out, clientID+" client has error in printing the word document: "+e.getMessage());
    e.printStackTrace();
    return false;
    }
      

  3.   

    那有没有纯java的方法能直接处理的呢,JNI可以自己留着琢磨一下,不过用上去是不大可能的,部署起来不方便,老伴肯定不同意。
      

  4.   

    现在通过对xsl做部分修改已经可以顺利执行了,但是执行结果中涉及到脚本的内容出不来,而且修改xsl对于任务来说实在不是个好办法,到底java中有没有解决方案啊?