sibenben123asd 2016-02-14 01:11 采纳率: 50%
浏览 1969
已采纳

如何使用poi调用并生成word

自己百度了很多内容,但是在eclipse中使用poi一直报错,无法实现使用poi调用并导出word的功能。

  • 写回答

4条回答 默认 最新

  • threenewbee 2016-02-14 01:39
    关注

    很明显是没有找到jacob,你的部署有问题

    另外
    String htmlfile = "D;/"; 这里D:不是分号

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • threenewbee 2016-02-14 01:15
    关注

    贴出你的错误和代码。报错可能是简单的权限问题或者细节的问题。

    评论
  • sibenben123asd 2016-02-14 01:31
    关注
     package com.doc.test;
    import java.util.Map;
    
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;
    
    import freemarker.template.Configuration;
    
    public class XmlToWord {
        private Configuration configuration = null;
        public XmlToWord(){
            configuration = new Configuration();
            configuration.setDefaultEncoding("utf-8");
        }
        public void xmlToWord(String docfile, String htmlfile){
            ActiveXComponent app =null;
            try {
            app=new ActiveXComponent("Word.Application"); //启动word
            app.setProperty("Visible", new Variant(false));
            Dispatch docs = app.getProperty("Documents").toDispatch();
            Dispatch doc = Dispatch.invoke(
            docs,
            "Open",
            Dispatch.Method,
            new Object[] { docfile, new Variant(false),
            new Variant(true) }, new int[1]).toDispatch();
            Dispatch selection=app.getProperty("Selection").toDispatch();
            Dispatch find = Dispatch.call(selection,"Find").toDispatch();
            Dispatch.put(find,"Text","目录");
            Dispatch.put(find,"Forward","True");
            Dispatch.put(find,"Format","True");
            Dispatch.put(find,"MatchCase","True");
            Dispatch.put(find,"MatchWholeWord","True");
            Dispatch.call(find,"Execute").getBoolean();
            Dispatch ActiveDocument = app.getProperty("ActiveDocument").toDispatch();
            Dispatch TablesOfContents = Dispatch.get(ActiveDocument,"TablesOfContents").toDispatch();
            Dispatch.call(selection,"MoveRight"); //移动光标到右边
            Dispatch.call(selection, "TypeParagraph"); //换行
            Dispatch range = Dispatch.get(selection, "Range").toDispatch();
            Dispatch.call(TablesOfContents,"Add",range,new Variant(true),new Variant(1),new Variant(3),new Variant(true),new Variant(""),new Variant(true),new Variant(true));
            Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
            htmlfile, new Variant(1) }, new int[1]);
            Variant f = new Variant(false);
            Dispatch.call(doc, "Close", f);
            } catch(Exception e){
    
            } 
            finally{
                if(app!=null)
                app.invoke("Quit", new Variant[] {});
            }
        }
    }
    
    

    package com.doc.test;

    import java.io.UnsupportedEncodingException;
    import java.util.HashMap;
    import java.util.Map;

    public class a {
        /**
         * @param args
         * @throws UnsupportedEncodingException 
         */
        public static void main(String[] args) throws UnsupportedEncodingException {
    
            Map<String, Object> dataMap = new HashMap<String, Object>();
            dataMap.put("command", "苏");
            XmlToWordTest  mdoc = new XmlToWordTest();
            XmlToWord adc = new XmlToWord();
            String docfile = "E:/outFile.doc";
            String htmlfile = "D;/";
            adc.xmlToWord(docfile,htmlfile);
            mdoc.createDoc(dataMap, "E:/outFile.doc");
            System.out.println(System.getProperty("java.library.path"));
        }
    
    
    
    }
    

    然后显示报错
    图片说明

    评论
  • tony4geek 2016-02-14 02:53
    关注

    jacob system32
    要 拷贝到system下面

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Unity导出2D项目运行时图片变成马赛克
  • ¥15 关于communitytoolkit.mvvm的生成器得到的代码看起来没有被使用的问题
  • ¥15 matlab中此类型的变量不支持使用点进行索引
  • ¥15 咨询第六届工业互联网数据创新大赛原始数据
  • ¥15 Pycharm无法自动补全,识别第三方库函数接收的参数!
  • ¥15 STM32U575 pwm和DMA输出的波形少一段
  • ¥30 android百度地图SDK海量点显示标题
  • ¥15 windows导入environment.yml运行conda env create -f environment_win.yml命令报错
  • ¥15 这段代码可以正常运行,打包后无法执行,在执行for内容之前一直不断弹窗,请修改调整
  • ¥15 C语言判断有向图是否存在环路