void CVCreadwriteRTFDlg::OnBnClickedButton1()
{
// 变量的声明
COleVariant vTrue((short)TRUE),
vFalse((short)FALSE),
vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CApplication oWordApp ;
CSelection oSel ;
CDocuments oDocs ;
CDocument0 oDoc ;
CParagraphs paragraphs ;
CStringArray aryText;
long paCounst;
int lc ;
// 首先建立一个word实例对象
if (!oWordApp.CreateDispatch(TEXT("Word.Application")) ){
AfxMessageBox( TEXT( "CreateDispatch failed." ) , MB_OK ¦MB_SETFOREGROUND);
return; // 一定要返回,否则程序崩溃
}
// 显示此对象文件 ,您也可以不调用此句,不显示对象文件
oWordApp.Set_Visible(TRUE);
// 创建文档
oDocs = oWordApp.get_Documents();
// 打开一个新文档,将e:\\BuildJobEdit.rtf文件的内容添加到新文档中
CComVariant tpl(_T("e:\\BuildJobEdit.rtf")), NewTemplate(false), DocType(0), Visble;
oDoc = oDocs.Add(&tpl,&NewTemplate,&DocType,&Visble);
// 选中文档中的所有内容
oSel = oWordApp.get_Selection();
oSel.WholeStory();// 此句必须有,否则后续代码无效。
// 得到所有段
paragraphs = oSel.get_Paragraphs();
paCounst = paragraphs.get_Count();
// 将所有段中的每一段都存在数组里
for( lc = 1 ; lc < paCounst+1 ; lc++ ){
// 得到一段
CParagraph paragraph;
paragraph = paragraphs.Item( (long)lc );
// 得到一段的文本
CRange range = paragraph.get_Range();
CString strRangeText = range.get_Text();
CFont font = range.get_Font();
// 设置文本的字体大小与颜色
//font.put_Color( RGB(0,255,0) );
//font.put_Size( 12 );
// AfxMessageBox( strRangeText );
// 保存到数组里
aryText.Add( strRangeText );
//释放对象
paragraph.ReleaseDispatch();
}
//// 修改word,这里先拿RTF文件第三行试一下
//paragraphs = oSel.get_Paragraphs();
paragraph = paragraphs.Item( (long)3);
range = paragraph.get_Range();
CString strRangeText = range.get_Text();
long strLen = strRangeText.GetLength();
range.SetRange(10,strLen);
CString strRangeText1 = range.get_Text();
range.put_Text( TEXT("444\r"));
//将当前文档保存到新的文档中
oDoc.SaveAs(COleVariant( TEXT("E:\\new.rtf") ),
COleVariant((short)0),
vFalse, COleVariant( TEXT("") ), vTrue, COleVariant( TEXT("") ),
vFalse, vFalse , vFalse, vFalse , vFalse,
vFalse, vFalse , vFalse, vFalse , vFalse
);
//// 检验
//INT_PTR iCount = aryText.GetCount();
//for(int lct=0; lct < iCount; lct++){
//
// AfxMessageBox( aryText.GetAt(lct) );
//}
//将当前文档保存到新的文档中
oDoc.SaveAs(COleVariant( TEXT("E:\\new.rtf") ),
COleVariant((short)0),
vFalse, COleVariant( TEXT("") ), vTrue, COleVariant( TEXT("") ),
vFalse, vFalse , vFalse, vFalse , vFalse,
vFalse, vFalse , vFalse, vFalse , vFalse
);
// 释放各种对象
oSel.ReleaseDispatch();
paragraphs.ReleaseDispatch();
oDocs.ReleaseDispatch();
oDoc.ReleaseDispatch();
CComVariant SaveChanges(false), OriginalFormat, RouteDocument;
oWordApp.Quit( &SaveChanges,&OriginalFormat,&RouteDocument );
oWordApp.ReleaseDispatch();
}