已事先建立好一个excel模板template,内含有一个图表,其原数据为两个系列。现通过自动化在vc中打开此模板,要求动态修改两个系列的原数据对应的区域,从而修改图表曲线。程序框架如下:
_Application app;  
_Workbook book;
_Worksheet sheet;
_Chart chart;Workbooks books;
Worksheets sheets;
LPDISPATCH lpDisp;COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);if (!app.CreateDispatch("Excel.Application",NULL)) 

AfxMessageBox("创建Excel服务失败!"); 
return; 

app.SetVisible(false); 
char Path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,Path);
CString strpath = Path;
strpath += "\\template";
books.AttachDispatch(app.GetWorkbooks(),true);
book.AttachDispatch(books.Add(_variant_t(strpath)));//Get Sheets
lpDisp = book.GetWorksheets();
ASSERT(lpDisp);
sheets.AttachDispatch(lpDisp);//Get sheet1
sheet.AttachDispatch(sheets.GetItem(COleVariant("sheet1")),true);
app.SetVisible(true); 
//set Curve rangeCString strIt1,strIt2;
Range rngTarget,rngPress;
strIt1.Format("%c%d",67,25);    //67对应"C"
strIt2.Format("%c%d",71,25);    //71对应""
rngTarget.AttachDispatch(sheet.GetRange(COleVariant(strIt1),COleVariant(strIt2)));
strIt1.Format("%c%d",67,30);
strIt2.Format("%c%d",71,30);
rngPress.AttachDispatch(sheet.GetRange(COleVariant(strIt1),COleVariant(strIt2)));ChartObject chartObj;
ChartGroups cgps;
ChartGroup cgp;
SeriesCollection serclt;
Series se;chartObj.AttachDispatch(sheet.ChartObjects(COleVariant((short)1)));
chartObj.SetRoundedCorners(TRUE);
chart.AttachDispatch(chartObj.GetChart());
se.AttachDispatch(chart.SeriesCollection(COleVariant((short)1)));
se.SetValues(rngPress.GetValue(vtMissing));
se.AttachDispatch(chart.SeriesCollection(COleVariant((short)2)));
se.SetValues(rngTarget.GetValue(vtMissing));//release
......
目前只能做到这一步,这样图表显示两条曲线分别对应"C25:G25"和"C30:G30"数据。可是问题是这样并没有将图表数据系列和excel表格关联起来(可以打开图excel表数据属性中系列的y值查看)。请问如何编写程序将数据系列和表格动态关联?