我的程序里面做了很多数据的统计,然后生成了excel。。现在客户要求在生成的excel里面根据数据再自动生成一张图表(比如柱形图,条形图,曲线图),一下就很明了的看出数据的大体信息。求做过的朋友赐教指点下,如果知道了还望留个言感激不尽。。感激涕零
解决方案 »
- 调用windowmediaplayer控件做播放器问题
- 如何在自己的函数中实现形参个数可以不确定性?像c中sprintf()函数,从第三个参数起,个数可以自己定?如何实现像它那样?
- 工具栏提示文本的问题?
- 使用ATL创建一个COM组件,在构造函数中调用接口函数,然后在接口函数中再调用另外的接口函数会出错。
- 求助!! 怎样让注册表修改后立即起作用
- 今天论坛改版,完成,散分了。
- 如何打印CListBox中的内容?(在线等待)
- ---请问VC中如何得到一个.mpg文件的帧数???急!---
- 不耻上问
- 请 Hover(翔) 大侠来领分
- 几个简单小问题
- VC6.0开始还可以正常显示界面,再添加了几行代码就出现窗口一闪而过?
或者在已生成报表的基础上录制宏,手动添加图表,然后把宏修改为代码
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
/*
CApplication app;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range,rootRange;
// Start Excel and get an Application object.
if(!app.CreateDispatch(_T("Excel.Application")))
{
MessageBox(MSG_CALLEXCEL_FAILED,MSG_INFOCOLL,MB_ICONWARNING);
return -1;
}
CString sVersion=app.get_Version();
//Get a new workbook.
books = app.get_Workbooks();
book = books.Add (covOptional);//不需要调用模版
//Get the first sheet.
sheets =book.get_Sheets();
sheet = sheets.get_Item(COleVariant((short)1));
//row col
long row =1,col,columnCount=0;
rootRange = sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("A1")));
*/
_Application ExcelApp; // 定义Excel应用程序
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//创建Excel 2003服务器(启动Excel)
if(!ExcelApp.CreateDispatch("Excel.Application", NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
ExcelApp.SetVisible(false); //隐藏
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(), true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(covOptional));
//得到WorkSheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(), true);/*
CString str1 = "第1页"; wsMysheet.SetName(str1);
for(int i=0; i<wssMysheets.GetCount()-1; i++)
{
wsMysheet = wsMysheet.GetNext();
str1.Format("第%d页", i+2);
wsMysheet.SetName(str1);
}
*/
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("Sheet2")), true);
wsMysheet.Delete();
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("Sheet1")), true);
CString tmp,rg;
for(int j= 1; j <= 4; j++)
{
tmp.Format("%d月份", j);
rg.Format("A%d:A%d", j, j);
rgMyRge= wsMysheet.GetRange(COleVariant(rg), covOptional);
rgMyRge.SetValue2(COleVariant(tmp));
} rgMyRge= wsMysheet.GetRange(COleVariant("B1:b4"), covOptional);
rgMyRge.SetFormula(COleVariant("=RAND()*10000")); Charts charts = wbMyBook.GetCharts();
_Chart chart1 = charts.Add(vtMissing, vtMissing, COleVariant((short)1));
// wsMysheet.ChartObjects.AddRef();
// _Chart chart = charts.GetItem(COleVariant((short)1));
chart1.SetChartType((long)51); rgMyRge = wsMysheet.GetRange(COleVariant("A1:B4"), covOptional);
chart1.SetSourceData(rgMyRge, COleVariant((short)2));
chart1.Location(long(2),_variant_t("Sheet1")); _Chart chart2 = charts.Add(vtMissing, vtMissing, COleVariant((short)1));
// wsMysheet.ChartObjects.AddRef();
// _Chart chart = charts.GetItem(COleVariant((short)1));
chart2.SetChartType((long)51);
rgMyRge = wsMysheet.GetRange(COleVariant("A1:B2"), covOptional);
chart2.SetSourceData(rgMyRge, COleVariant((short)2));
chart2.Location(long(2),_variant_t("Sheet1"));
// chart2.Move(long(9),long(12));
// wsMysheet.GetShapes().;
/*
rgMyRge = wsMysheet.GetRange(COleVariant("A1:B2"), covOptional);
chart.SetSourceData(rgMyRge, COleVariant((short)2));
chart.Location(long(2),_variant_t("Sheet1"));
*/
/*
chart.SetHasTitle(TRUE);
ChartTitle chartTtl = chart.GetChartTitle();
chartTtl.SetText("<-股票涨跌幅分月统计图->");
chartTtl.SetShadow(TRUE);
chart.SetHasLegend(FALSE);
*/// Series series = chart.SeriesCollection(COleVariant((short)1));
wsMysheet.SetVisible(TRUE); char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH, path);
CString strPath = path;
strPath += "\\1.xls";
wsMysheet.SaveAs(strPath, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing);
wbMyBook.SaveAs(COleVariant(strPath),COleVariant((short)1),COleVariant(_T("")),COleVariant(_T("")),COleVariant((short)0),COleVariant((short)0),
0,COleVariant((short)0),COleVariant((short)0),COleVariant((short)0),COleVariant((short)0),COleVariant((short)0));
ExcelApp.SetVisible(true);柱状图的,关键代码在上面,用VC添加excel的组件,然后调用里面的函数,找本VC操作excel的文献看看
http://download.csdn.net/detail/yeah2000/3576494