ATL development in Chart in Excel
利 用Excel提供的类型库, 对Excel文档进行操作, 图表的开发是一项痛苦的工作, 一个图表是由多个series(系列)组成, 每个系列可以赋值不同的公式(formular). 本文对系列上显示的标记文本和背景的颜色改变作一点探讨, 由于是基于COM组件的ActiveX控件开发, 不同于用VBA脚本的开发, 相关内容在网上讨论几乎没有.
我们已经创建一个chart在excel文档, 详见下面代码:
SeriesCollection serc;
serc=chart.SeriesCollection(vtMissing);
Series ser=serc.NewSeries();
Interior oInt = ser.GetInterior();
oInt.SetColor(_variant_t((long)0));
// 注意, 这段代码会crash, 被注释掉
//ser.SetMarkerBackgroundColor(RGB(0,0,0));
LPDISPATCH lpdisp = wssMysheets.GetItem(_variant_t("Info"));
_Worksheet sheet;
sheet.AttachDispatch(lpdisp);
str1.Format("I%d", i);
str2.Format("=Info!I%d", i);
lpdisp=sheet.GetRange(COleVariant(str1), COleVariant(str1));
VARIANT var;
var.vt = VT_DISPATCH; // .vt is the usable member of the tagVARIANT
var.pdispVal = lpdisp;
ser.SetValues(var);
// 关键代码...
// 先适应数据标记
ser.ApplyDataLabels(2, // Show value
vtMissing,
vtMissing,
vtMissing,
vtMissing,
vtMissing,
_variant_t(true),
vtMissing,
vtMissing,
vtMissing);
// 得到缺省的数据标记
DataLabels dls = ser.DataLabels(vtMissing);
// 得到数据标记字体
Font font = dls.GetFont();
// 对数据标记文本颜色修改!
font.SetColor(_variant_t((long)RGB(255,255,255)));
DataLabels有一个方法GetInterior(), 返回Interior对象, 调用其中的SetColor就可以改变标记文本的背景颜色.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.