趴着走走 2017-02-08 02:50 采纳率: 100%
浏览 2994
已采纳

jacob,如何在word文档里生成柱状的统计图,以及图表的样式设置,如下图的样式,求源代码,谢谢了

图片说明
这是一部分自己做的代码,但是不知道怎么设置统计图的样式
public void setChartDate(String filepath,String pos,List list){
ActiveXComponent word=null;
Dispatch doc=null;
Dispatch graph=null;
try{
word = new ActiveXComponent("Word.Application");//开启
//得到word对象的处于活动状态的Document
Dispatch documents = Dispatch.get(word,"Documents").toDispatch();
//打开已经存在的word对象如果是新建一个word文件的话,需要将Open换成Add,然后去掉filepath参数即可
doc = Dispatch.call(documents, "Open",filepath).toDispatch();
//得到该对象的编辑区域
Dispatch selection = Dispatch.get(word, "Selection").toDispatch();
//设置该对象不可见
Dispatch.put(word, "Visible", new Variant(false));
//插入ole对象
Dispatch inLine =Dispatch.get(selection,"InlineShapes").toDispatch();
graph=Dispatch.call(inLine, "AddOLEObject","MSGraph.Chart.8").toDispatch();
//设置图表的高度
Dispatch.put(graph, "Height", new Variant(200.00));
//设置表的宽度
Dispatch.put(graph, "Width", new Variant(350.00));

    //格式化图表
    Dispatch oleFormat = Dispatch.call(graph,"OLEFormat").toDispatch();
    Dispatch obj = Dispatch.call(oleFormat, "Object").toDispatch();
    Dispatch dataSheet = Dispatch.get(obj, "Application").toDispatch();
    Dispatch dataSheet2 = Dispatch.get(dataSheet, "dataSheet").toDispatch();
    //得到该图表的数据表
    //得到数据表的单元格
    Dispatch cells = Dispatch.get(dataSheet2, "Cells").toDispatch();
    //得到数据表的行
    //Dispatch rows= Dispatch.get(cells, "Rows").toDispatch();
//  System.out.println(rows);
    //清空数据表行的默认数据
    //Dispatch.call(rows, "Clear");
    //for循环添加数据
    for(int i=0;i<list.size();i++){
        Object[] o=list.get(i);
        for(int j=0;j<o.length;j++){
                Dispatch item = Dispatch.call(cells, "Item",new Variant(i+2),new Variant(j+2)).toDispatch();
                Dispatch.put(item, "value", o[i]);
        }
    }

    if (find(selection,pos)) {
        Dispatch textRange = Dispatch.get(selection, "Range")
                .toDispatch();
        Dispatch.call(textRange, "Paste");
    }


    }catch(Exception e){
        e.printStackTrace();

    }finally{
        //关闭word文档,参数表示是否保存
        Dispatch.call(doc, "Close",new Variant(true));
        //退出word文档,这步和关闭一样,因为只关闭不退出,该word的进程不会结束
        Dispatch.call(word, "Quit",new Variant(0));
        //释放word编辑的时候引用的其他资源,比如Graph.exe进程
        ComThread.Release();
        doc=null;
        graph=null;
        word=null;
    }
}

求大神帮忙解决一下,万分感谢
  • 写回答

2条回答 默认 最新

  • 趴着走走 2017-02-16 08:16
    关注

    删不掉编辑了,可以参考office的vba文档,以及C#的写法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记