趴着走走 2017-02-07 18:50 采纳率: 100%
浏览 2998
已采纳

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 00:16
    关注

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

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

报告相同问题?

悬赏问题

  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?