如下代码只能在新生成的worksheet中添加图表
_Application ExcelApp;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
COleVariant covTrue((short)TRUE),covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
ExcelApp.SetVisible(TRUE);
char sFileName[256];
::GetModuleFileName(NULL, sFileName, 256);
CString sFilePath;
sFilePath = sFileName;
for (int j = sFilePath.GetLength()-1; j >= 0, sFilePath[j] != '\\';--j);
CString sPath(sFilePath.Left(j));
CString sTempleteName;
sTempleteName=sPath+"\\tubiao.xlt"; books = ExcelApp.GetWorkbooks();
book = books.Open(sTempleteName,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,
covOptional, covOptional,covOptional,covOptional,covOptional,covOptional); sheets = book.GetWorksheets();
sheet = sheets.GetItem(COleVariant((short)1)); Charts charts = book.GetCharts();
sheet.SetVisible(TRUE);
Range range = sheet.GetCells();
range.Clear();
range = sheet.GetRange(COleVariant("A1"), covOptional);
range.SetValue2(COleVariant("月份"));
range = sheet.GetRange(COleVariant("B1"), covOptional);
range.SetValue2(COleVariant("股票涨跌幅")); CString tmp,rg; for(int i = 1; i <= 12; i++)
{
tmp.Format("%d月份", i);
rg.Format("A%d:A%d", i+1, i+1);
range = sheet.GetRange(COleVariant(rg), covOptional);
range.SetValue2(COleVariant(tmp));
} range = sheet.GetRange(COleVariant("B2:b13"), covOptional);
range.SetFormula(COleVariant("=RAND()*10000")); _Chart Chart = charts.Add(vtMissing, vtMissing, COleVariant((short)1));
Chart.SetChartType((long)51);
range = sheet.GetRange(COleVariant("A1:B13"), covOptional);
Chart.SetSourceData(range, COleVariant((short)2));
Chart.SetHasTitle(TRUE);
ChartTitle ChartTtl = Chart.GetChartTitle();
ChartTtl.SetText("<-股票涨跌幅分月统计图->");
ChartTtl.SetShadow(TRUE);
Chart.SetHasLegend(FALSE);
Series oSeries = Chart.SeriesCollection(COleVariant((short)1));
sheet.SetVisible(TRUE); 现在我需要在一个worksheet中根据已有数据插入图表,我想用函数LPDISPATCH _Chart::Location(long Where, const VARIANT& Name),但是我不知道怎么设置参数Where,请高手赐教!!!!!!!!
_Application ExcelApp;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
COleVariant covTrue((short)TRUE),covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
ExcelApp.SetVisible(TRUE);
char sFileName[256];
::GetModuleFileName(NULL, sFileName, 256);
CString sFilePath;
sFilePath = sFileName;
for (int j = sFilePath.GetLength()-1; j >= 0, sFilePath[j] != '\\';--j);
CString sPath(sFilePath.Left(j));
CString sTempleteName;
sTempleteName=sPath+"\\tubiao.xlt"; books = ExcelApp.GetWorkbooks();
book = books.Open(sTempleteName,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,
covOptional, covOptional,covOptional,covOptional,covOptional,covOptional); sheets = book.GetWorksheets();
sheet = sheets.GetItem(COleVariant((short)1)); Charts charts = book.GetCharts();
sheet.SetVisible(TRUE);
Range range = sheet.GetCells();
range.Clear();
range = sheet.GetRange(COleVariant("A1"), covOptional);
range.SetValue2(COleVariant("月份"));
range = sheet.GetRange(COleVariant("B1"), covOptional);
range.SetValue2(COleVariant("股票涨跌幅")); CString tmp,rg; for(int i = 1; i <= 12; i++)
{
tmp.Format("%d月份", i);
rg.Format("A%d:A%d", i+1, i+1);
range = sheet.GetRange(COleVariant(rg), covOptional);
range.SetValue2(COleVariant(tmp));
} range = sheet.GetRange(COleVariant("B2:b13"), covOptional);
range.SetFormula(COleVariant("=RAND()*10000")); _Chart Chart = charts.Add(vtMissing, vtMissing, COleVariant((short)1));
Chart.SetChartType((long)51);
range = sheet.GetRange(COleVariant("A1:B13"), covOptional);
Chart.SetSourceData(range, COleVariant((short)2));
Chart.SetHasTitle(TRUE);
ChartTitle ChartTtl = Chart.GetChartTitle();
ChartTtl.SetText("<-股票涨跌幅分月统计图->");
ChartTtl.SetShadow(TRUE);
Chart.SetHasLegend(FALSE);
Series oSeries = Chart.SeriesCollection(COleVariant((short)1));
sheet.SetVisible(TRUE); 现在我需要在一个worksheet中根据已有数据插入图表,我想用函数LPDISPATCH _Chart::Location(long Where, const VARIANT& Name),但是我不知道怎么设置参数Where,请高手赐教!!!!!!!!
解决方案 »
- 如何获取当前正在文档信息。
- PreTranslateMessage怎么调用
- if(pixel == 0 || pixel == 1)?
- 怎么移动一个CRgn三角形
- WTL,CCodePageCombo继承CComboBoxT<ATL::CWindow>类,需要响应下拉菜单CloseUp的消息
- 求教EnableRouter函数的用法
- PreSubClass这个函数什么用
- CDatabase类里获取数据库名的函数是哪个啊?
- 图片文件存储的问题
- 如何把一个.lib连接到project上?(BTW:上海什么地方可以买到〈深入浅出MFC>
- 为什么我写的 ATL COM组件,使用regsvr32注册以后,属性里面“在此计算机上运行应用程”不能被选择
- 把CTime对象转换成CString后放在SQL语句里执行出错~请明白人来看看!
Chart.Location Method
Moves the chart to a new location.
Syntaxexpression.Location(Where, Name)expression An expression that returns a Chart object.ParametersWhere XlChartLocation Where to move the chart.
Name Variant Required if Where is xlLocationAsObject. The name of the sheet where the chart will be embedded if Where is xlLocationAsObject or the name of the new sheet if Where is xlLocationAsNewSheet.
Return Value
ChartExample
This example moves the embedded chart to a new chart sheet named "Monthly Sales."Visual Basic for Applications
Worksheets(1).ChartObjects(1).Chart _
.Location xlLocationAsNewSheet, "Monthly Sales"
XlChartLocation EnumerationName Value Description
xlLocationAsNewSheet 1 Chart is moved to a new sheet.
xlLocationAsObject 2 Chart is to be embedded in an existing sheet.
xlLocationAutomatic 3 Excel controls chart location.