当前位置: 代码迷 >> VBA >> MFC开发Excel2007雷达图有关问题
  详细解决方案

MFC开发Excel2007雷达图有关问题

热度:1801   发布时间:2013-02-26 00:00:00.0
MFC开发Excel2007雷达图问题
在用vc开发excel时遇到问题,麻烦大家帮忙看看.

需要在excel中用程序自动生成雷达图,代码编译无错,而且在office2003环境下.程序运行正确,雷达图能正确显示,但是当环境换成office2007或者office2010时,雷达图无法显示.2007报错"该对象无标题"2010报错"服务器不可用".不知道大家有没有碰到过,是否还需要特别设置什么参数呀?但当将图表类型由雷达图(序号-4151)换成别的(比如柱状图11)时,图形能够正确显示. 

_Chart chart;
ChartObjects chartobjects;
ChartObject chartobject;
lpDisp = m_oWorkSheet.ChartObjects(covOptional);
chartobjects.AttachDispatch(lpDisp,true);
chartobject = chartobjects.Add(0,0,700,500);
chart = chartobject.GetChart();
VARIANT var;
var.vt = VT_DISPATCH;
var.pdispVal = lpDisDt;

chart.ChartWizard
(var, // Source.
COleVariant((short)-4151), // Gallery 雷达图
covOptional, // Format: 1~6.
COleVariant((short)1), // PlotBy.
COleVariant((short)1), // CategoryLabels.
COleVariant((short)1), // SeriesLabels.
COleVariant((short)TRUE), // HasLegend.
COleVariant(_T("Ventable Volume")), // Title.
COleVariant(_T("YAW")), // CategoryTitle.
COleVariant(_T("Volume(Liters)")), // ValueTitles.
covOptional // ExtraTitle.
);

------解决方案--------------------------------------------------------
是不是excel类型库的问题?用2007的类型库应该会兼容2003的吧
------解决方案--------------------------------------------------------
探讨

是不是excel类型库的问题?用2007的类型库应该会兼容2003的吧

------解决方案--------------------------------------------------------
2007在2003下,是有所变化的,一些函数的接口、参数都有变化。

建议:
用2003的excel作一个模板文件,放到程序里面
在程序运行时,使用兼容模式拷贝一份模板并打开,这样处理是2003的模板可能会帮你处理这些不兼容的情况;