【C++简单写Word】(四) 整理及反思

原创 2016年08月31日 13:55:18

在学习用代码操作Word的时候真是遇到了许许多多的困难啊,不过好歹一一克服了。
我要将我这段时间的所学整理成笔记。
在如何初始化Word或者Excel上,网络上有很多详细的教程我就不在啰嗦了。

不过如果无法初始化Application时,问题一般出在忘记添加

    if (!AfxOleInit())
    {
        AfxMessageBox(_T("初始化OLE出错"));
        return;
    }

无论是写VBA或者写调用的时候有许许多多的函数,我们并不太清楚这个函数的作用,这个时候我们可以参考MSDN或者看WPS表格功能树


传递的参数有两种写法

一
    CComVariant Template(_T(""));
    CComVariant NewTemplate(false);
    CComVariant DocumentType(0);
    CComVariant的构造参数会自动识别传递类型
    传递该引用即可,如 &Template
二
    COleVariant((short)10);
    COleVariant(_T(""));
    使用这种方法时需要加入该类型

在写VBA时有许多可选参数,而在代码部分可选参数也是必须填上的,这个时候可以使用

COleVariant VarOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  // 默认参数

向传递VarOpt这个值即可,在我们不太清楚函数要调用的是什么参数的时候也可以传递该参数。


有些参数需要特殊化处理,比如

LPDISPATCH AddOLEObject(VARIANT * ClassType, VARIANT * FileName, VARIANT * LinkToFile, VARIANT * DisplayAsIcon, VARIANT * IconFileName, VARIANT * IconIndex, VARIANT * IconLabel, VARIANT * Range)
该函数的最后一项是要求传入一个Range的指针进去,如果我们希望当我们输出时是按照先输出一段文字,再输出表格或者图表的话,Range就需要特殊化处理。
Range.SetRange(Selection.get_End(), Selection.get_End());
CComVariant range(Range);
最后传递&range

当我们使用Document.SaveAs(VARIANT * FileName,……)该函数保存的时候保存的文件格式只能是.doc,如果是.ocx程序就会崩溃,这个我不太理解是为什么,如果有知道的希望能告诉我下。


如果要在写Word的时候输出图表,那么久需要加入Excel的支持文件,就是把生成图表之后的指针交给Excel中的workbook,这样就可以直接写数据了

    Range.SetRange(Selection.get_End(), Selection.get_End());
    CComVariant range(Range);
    Shape = Shapes.AddOLEObject(COleVariant(L"Excel.Chart"), VarOpt, VarOpt, VarOpt, VarOpt, VarOpt, VarOpt, &range);
    OLEFormat = Shape.get_OLEFormat();
    CWorkbook workbook = OLEFormat.get_Object();

大概就是这些了,如果有什么问题欢迎大家和我讨论。如果哪块有问题,我也希望大家能帮我指正出来,我会一一改正。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28314759/article/details/52384272

自己动手从0到1写嵌入式操作系统

-
  • 1970年01月01日 08:00

项目总结--反思

这两天项目基本可以告一段落了,到现在为止,做这个项目以差不多2个半月了,虽然项目基本算完成。但其间的疏忽却不少。    首先,在刚开始做项目时,感觉这个程序应该说是非常简单的,在加上我现在处由传型期,...
  • aero_boy
  • aero_boy
  • 2005-11-24 15:39:00
  • 1455

C与C++的个人反思

C与C++的一些个人反思
  • zlf_jack
  • zlf_jack
  • 2014-10-24 21:59:47
  • 1095

毕业设计反思

毕业设计题目是基于socket的即时通信软件。
  • Tiny_210
  • Tiny_210
  • 2014-04-29 22:58:10
  • 742

日常工作反思(一)

最近公司和亚马逊合作,把产品放到亚马逊上销售,虽说只有4款产品,但是销量很好,起初是让业务人员在CRM里面录入,但是订单量一大了之后就发现这样效率太低,会造成发货不及时的问题。 所以,业...
  • Mr_Gorgre
  • Mr_Gorgre
  • 2015-10-16 20:29:42
  • 1035

C++反思录

一、指针与数组下标的区别: 1.下标容易理解,指针效率高 2.使用下标须知道使用哪个数组,而使用指针不需要,指针自身包含了所有必要的信息 3.改变数组大小或插入时,有时会使指针失效 二、虚函数总结 h...
  • Helloguoke
  • Helloguoke
  • 2013-11-22 11:01:46
  • 497

今目标——停课反思

暴风雨再次飘过,让我们再次深深体会到问题的严重性。老天爷又怒了,原因肯定是他的子女犯了错误,那么子女们就应该敢于承受这个错误,好好认识和反思。那又是什么错误呢?那就是今目标没有做计划或是项目延期或是没...
  • liu_yujie2011com
  • liu_yujie2011com
  • 2014-09-24 17:27:24
  • 1066

对于大学的反思

五年多以前,我进入了全国重点名牌大学:武汉大学读书。我抱着最理想的热情,以为从此走上了一条报效祖国,报效父母的人生坦途,以为我的人生即将要大展宏图!   三年以前,抱着对“我的大学”最大的疑惑和不解...
  • cos_sin_tan
  • cos_sin_tan
  • 2012-05-05 23:34:36
  • 3810

word技巧 很好的整理word文档

  • 2009年09月21日 11:57
  • 750B
  • 下载

C++操作Word学习笔记

http://blog.sina.com.cn/s/blog_945492f401012nnn.html
  • gjtboa
  • gjtboa
  • 2016-01-07 11:46:59
  • 1819
收藏助手
不良信息举报
您举报文章:【C++简单写Word】(四) 整理及反思
举报原因:
原因补充:

(最多只允许输入30个字)