演示一下如何通过VC操作Excel生成下面这样的一个图表,它有两个系列,每个系列都拥有自己的X轴数据和Y轴数据,同时显示其线性的渐近线(TrendLine)以及获取其渐近线公式,因为在项目当中有时候需要其渐近线公式进行分析。

具体的代码演示如下:

// 变量的定义 _Application app; Workbooks books; _Workbook book; Worksheets sheets; _Worksheet sheet; Range range; LPDISPATCH lpDisp; COleVariant vResult; _Chart chart; ChartObjects chartobjects; ChartObject chartobject; SeriesCollection serc; Series sercies; ChartTitle charttitle; AxisTitle axistitle; Axis axis; Trendlines trendlines; Trendline trendline; DataLabel dataLabel; Font ft; VARIANT var; CString str; COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //创建Excel 2003服务器(启动Excel) if (!app.CreateDispatch("Excel.Application",NULL)) { AfxMessageBox("Create Excel service failure!"); return; } // 设置为FALSE时,后面的app.Quit();注释要打开 // 否则EXCEL.EXE进程会一直存在,并且每操作一次就会多开一个进程 app.SetVisible(TRUE); books.AttachDispatch(app.GetWorkbooks(),true); book = books.Add(covOptional); // 添加一个工作簿,这里没有open操作,在最后调用SaveCopyAs另存为 // 得到Worksheets sheets.AttachDispatch(book.GetWorksheets(),true); // 得到Worksheet sheet.AttachDispatch(sheets.GetItem(_variant_t((short)(1)))); // 得到全部Cells range.AttachDispatch(sheet.GetCells(),true); range.SetItem(_variant_t((LONG)1),_variant_t((LONG)1),_variant_t("X1")); range.SetItem(_variant_t((LONG)1),_variant_t((LONG)2),_variant_t("X2")); range.SetItem(_variant_t((LONG)1),_variant_t((LONG)4),_variant_t("Y1")); range.SetItem(_variant_t((LONG)1),_variant_t((LONG)5),_variant_t("Y2")); // 将数据填入Excel表格 for (int i = 0; i < 8; i++) { range.SetItem(_variant_t((LONG)(2+i)),_variant_t((LONG)1),_variant_t((long)(i+1))); range.SetItem(_variant_t((LONG)(2+i)),_variant_t((LONG)2),_variant_t((long)(i+3))); range.SetItem(_variant_t((LONG)(2+i)),_variant_t((LONG)4),_variant_t((long)((i+1)*(i+1)))); range.SetItem(_variant_t((LONG)(2+i)),_variant_t((LONG)5),_variant_t((long)((i+1)*(i+2)))); } // 图表(chart) /****************************************************************************************************/ double left = 200, top = 160, width = 450, height = 260; lpDisp = sheet.ChartObjects(covOptional); ASSERT(lpDisp); chartobjects.AttachDispatch(lpDisp); chartobject = chartobjects.Add(left, top, width, height); chart.AttachDispatch(chartobject.GetChart()); chart.SetChartType(74); // xlXYScatterLines = 74 var.vt = VT_DISPATCH; // 系列1 A /*********************************************************************************/ serc = chart.SeriesCollection(covOptional); sercies = serc.NewSeries(); lpDisp = sheet.GetRange(_variant_t("A2"), _variant_t("A9")); var.pdispVal = lpDisp; sercies.SetXValues(var); // 设置X轴的数据 lpDisp = sheet.GetRange(_variant_t("D2"), _variant_t("D9")); var.pdispVal = lpDisp; sercies.SetValues(var); // 设置Y轴的数据 sercies.SetName("A"); // 添加趋势线 trendlines = sercies.Trendlines(covOptional); trendline = trendlines.Add(-4132, covOptional, covOptional, covOptional, covOptional, covOptional, _variant_t((long)1), _variant_t((long)0), covOptional); // xlDataSeriesLinear = -4132 dataLabel = trendline.GetDataLabel(); ft = dataLabel.GetFont(); ft.SetColorIndex(_variant_t((long)5)); // blue str = dataLabel.GetText(); // 获取趋势线的公式 // 系列2 B /*********************************************************************************/ serc = chart.SeriesCollection(covOptional); sercies = serc.NewSeries(); lpDisp = sheet.GetRange(_variant_t("B2"), _variant_t("B9")); var.pdispVal = lpDisp; sercies.SetXValues(var); // 设置X轴的数据 lpDisp = sheet.GetRange(_variant_t("E2"), _variant_t("E9")); var.pdispVal = lpDisp; sercies.SetValues(var); // 设置Y轴的数据 sercies.SetName("B"); // 添加趋势线 trendlines = sercies.Trendlines(covOptional); trendline = trendlines.Add(-4132, covOptional, covOptional, covOptional, covOptional, covOptional, _variant_t((long)1), _variant_t((long)0), covOptional); // xlDataSeriesLinear = -4132 dataLabel = trendline.GetDataLabel(); ft = dataLabel.GetFont(); ft.SetColor(_variant_t((long)0xEE00EE)); str = dataLabel.GetText(); // 获取趋势线的公式 chart.Location(2, _variant_t("Sheet1")); chart.SetHasTitle(TRUE); // 设置图表标题 charttitle = chart.GetChartTitle(); charttitle.SetText("图表标题"); // 设置X坐标轴 axis = chart.Axes(_variant_t((long)1), 1); axis.SetHasTitle(TRUE); // 设置坐标轴的标题可见 axistitle = axis.GetAxisTitle(); axistitle.SetText("X轴标题"); // 设置X坐标轴的标题文本 // 设置Y坐标轴 axis = chart.Axes(_variant_t((long)2), 1); axis.SetHasTitle(TRUE); // 设置坐标轴的标题可见 axistitle = axis.GetAxisTitle(); axistitle.SetText("Y轴标题"); // 设置Y坐标轴的标题文本 book.SaveCopyAs(_variant_t("E://test.xls")); app.SetDisplayAlerts(false); // 不弹出对话框询问是否保存 // app.Quit(); // 退出 //释放对象 range.ReleaseDispatch(); sheet.ReleaseDispatch(); sheets.ReleaseDispatch(); book.ReleaseDispatch(); books.ReleaseDispatch(); app.ReleaseDispatch();

VC操作Excel之sercies、Trendline相关推荐

  1. VC操作Excel文件编程相关内容总结

    最近在做个数据库程序,因为有些数据用户要求导出到Excel文件显示(需要报给其他单位).所以查阅了一下相关的VC的Excel编程操作,总结一下吧:(所有资料来源于网络) 利用VC操作Excel的方法至 ...

  2. VC操作excel表格

    VC操作excel表格(一) 1.The require files When you start to program in VC, you must have the lib files of E ...

  3. VC 操作excel

    简介 通过本文及配套示例源码你可以更加灵活的控制Excel表格文件,其中包括创建新Excel文件.写入表格数据.读取表格数据(包括对原建Excel文件自已手工添加的行.列数据的准确读取),删除已有Ex ...

  4. VC操作Excel收集

    VC操作Excel的方法(2007-01-05 21:18:45)      A:从classwizard中add class处from type library,去office的安装目录下引入exc ...

  5. 使用VB或VC操作Excel 2003

    1.VB操作EXCEL2003 [vb] view plaincopy '*************************************************************** ...

  6. vc操作excel,包括合并单元格,新增,删除sheet,设置字体,底色(OLE/COM)

    1.制作应用软件的时候,经常要把结果以报表的形式输出,当前使用较为广泛的当然是Excel表格,本文简略介绍在VC++6.0中如何使用Excel2003的库函数并对其进行编程.先创建一个对话框工程,命名 ...

  7. vc操作Excel。

    pc操作系统情况:     Windows XP,office 2003,vc6 经过半下午的搜索发现了vc操作Excel的几种方法 1.ODBC.     暂时还没有试. 2.OLE,即com的方式 ...

  8. VC操作Excel之用ChartWizard自动生成图表

    在用VC操作Excel的时候,生成图表有时是不可避免的,这里记下如何通过ChartWizard来简单生成一个图表.首先我们得了解一下图表的组成结构,一个简单的chart通常包括标题.绘图区.图例.数值 ...

  9. VC++操作EXCEL内存泄露问题

    一般VC++操作EXCEL的操作步骤我就不写了,度娘一下一大堆. 好久以前写在博客里面的一篇草稿,现在博客开张了,一并放出来吧. 2014年11月为了EXCEL的"切换到.重试.取消&quo ...

最新文章

  1. 使用元组输入进行计算和归约
  2. 《预训练周刊》第17期:深度迁移学习与数据增强改善2型糖尿病预测、钢琴补谱应用...
  3. 油猴脚本第一家,网页网盘链接实时判断+资源搜索网站导航,资源重度患者的福利...
  4. 数据告诉你,胡歌的微世界
  5. USACO 1.2 挤牛奶
  6. python框架之Django(2)-简单的CRUD
  7. java多线程写在哪一层_面试知识点三:Java多线程
  8. 链表常见面试题二:约瑟夫环
  9. macos安装盘第三方工具制作_一步一步教你为macOS创建系统安装盘
  10. B端产品流程图一网打尽
  11. 使用https协议解决掉顽固不化的已解密的登录请求
  12. 单目摄像头光学图像测距_摄像头与毫米波雷达(Radar)融合解析
  13. java代码性能优化
  14. refprop物性库_Refprop9.1_Refprop(制冷剂物性查询软件)下载 v9.1免费版 附教程 - 121下载站...
  15. 虚拟与增强现实——输入与输出设备
  16. Arduino智能小车直线控制-模糊PID控制
  17. 流年依旧,只是散了曾经
  18. [数据结构 算法] A*算法--罗马尼亚度假问题(实验课作业)
  19. iOS 苹果官方Demo合集
  20. Android:证书生成

热门文章

  1. 解决 win10家庭中文版 远程连接:出现身份验证错误 要求的函数不受支持
  2. 中国政府信息化行业发展规划及投资前景分析报告
  3. autobahn-java-master,禁用自动配置
  4. 富士康宣布投资3.42亿美元研发人工智能
  5. 对日软件外包的一点感受
  6. 永远都不要轻言放弃,因为没有人会随随便便成功
  7. samsung学习笔记2
  8. 1330:【例8.3】最少步数
  9. linux查察删除端口
  10. 如何修改桌面的存放路径??(将桌面放到D盘或E盘)