【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();

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

【C++简单写Word】(一)概念了解

这些都是我在学习的时候看到的一些基础概念。均来源于百度百科 Component Object Model(COM——组件对象模型) 组件对象模型,一种面向对象的编程模式。它定义了对象在单个应用程序...

【C++简单写Word】(三) 基本操作的实现

我实现了一些较为简单的功能:比如输出文本信息,将其格式化,输出表格数据,以及绘画柱状图的功能ToWord.h#pragma once #include "CApplication.h" #includ...

【C++简单写Word】(二)word的初始化

如果要将C++的内容输出到Word文档中,需要安装MicrosoftOffice.不同的Office版本需要的文件不相同。 我这里使用的是Office2010在Office文件夹中找到该文件: ...

vs2012下C++操作word的简单实例

  • 2016年01月15日 21:24
  • 44.39MB
  • 下载

Word2vec简单整理

参考:https://zhuanlan.zhihu.com/p/22477976 http://yobobobo001.github.io/2016/05/26/%E6%88%91%E6%89%80%...

VS2012下C++操作word(整理)

参考:http://bbs.csdn.net/topics/300141389             http://blog.csdn.net/hhhh63/article/details/7652...

C++操作Word学习笔记(四)

【当前博文转自http://blog.sina.com.cn/s/blog_4aaac71b01000brk.html】 【本文有打印相关操作】 1、初始化COM库 2、利用COM接口提供的函数,打开...
  • aleyuan
  • aleyuan
  • 2014年03月19日 21:09
  • 727
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C++简单写Word】(四) 整理及反思
举报原因:
原因补充:

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