最近琐事比较多,忘记整理知识点,实在是罪过。今天补补课。
项目中需要将数据库中的测试信息导出并打印。这个比较虐心。搞了好几天,终于整出了点头绪。
下面介绍下通过MFC 操作Word的一些编程知识。我也刚入门,不当之处还请博友们批评指正。
MFC操作WORD的步骤:
1、新建MFC工程并导入WORD相关类库
新建工程步骤不在赘述,主要是word类库的导入(VS2013)。
Project->Calss Wizard->Add Class->MFC Class from Typelibrary
弹出如下对话框
在该对话框中,找到 Add class from 标签,选择File单选框,然后再下面的Location中输入自己电脑Officed的安装路径,找到MSWORD.OLB,如图所示。
根据需要选择导入相关的接口。其中
_Application
_Document
是最基本的,本项目导入了
#include "CApplication.h"
#include "CBookmark0.h"
#include "CBookmarks.h"
#include "CBorders.h"
#include "CBorder.h"
#include "CCells.h"
#include "CCell.h"
#include "CDocuments.h"
#include "CDocument0.h"
#include "CFont0.h"
#include "CRange.h"
#include "CSelection.h"
#include "CTables0.h"
#include "CTable0.h"
#include "CPageSetup.h"
#include "CColumn.h"
#include "CColumns0.h"
#include "CRow.h"
#include "CRows.h"
#include "CParagraphs.h"
#include "CParagraph.h"
#include "CShapes.h"
#include "CShape.h"
每一个头文件对应word操作中一个类别的操作,如Tables接口管理文档中所有的表格,Table接口管理文档中的某个具体的表格等。
1、创建WORD应用对象和文档对象,(相当于打开word.exe)
CApplication wordApp;
CDocuments docs;
if (!wordApp.CreateDispatch(_T("Word.Application")))
{
AfxMessageBox(_T("对象创建失败,请重试!"));
return;
}
docs = wordApp.get_Documents();//CDocuments用于管理所有当前在Word中打开的Document对象的集合。
2、创建一个文档(CDocument)。
//1、使用模板
//模板文件保存路径为F:\\test.dot
COleVariant covZero((short)0),
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),
covDocxType((short)0),
start_line, end_line,
dot(_T("F:\\test.dot"));
docx = docs.Add(dot, covOptional, covOptional, covOptional);
//2、不使用模板
docs.Add(&CComVariant(L""),&CComVariant(FALSE),&CComVariant(0),&CComVariant(TRUE));
3、MFC编辑Word文档
创建完成后即可通过调用函数向文件内写入数据。
相关的对象主要是CRange、CSelection、CParagraphs、CParagraph等。
MFC 操作word生成表格相关对象主要是CTables、CTable、CCells、CCell、CRow、CColumns、CColumn等。
具体的操作可以通过office的录制宏查看调用的对象。具体方法为:
office2013版本下
视图—>宏—>录制宏即可。我们可以选择对键盘或者鼠标进行监控。
宏1记录了在新建文档中输入内容:
this is a test file
的相关代码
宏2记录了在word中新建表格的相关代码
宏3记录了在word中输入内容并换行的代码。
通过查看宏中的代码我们可以知道调用那些对象,需要设置那些属性,属性值如何设置等内容。
然后结合微软的帮助文档 https://docs.microsoft.com/zh-CN/office/vba/api/overview/进行相关的开发。
对Excel的操作与此类似。