获取word文档所有段落,获取word所有内容,区分目录结构和正文结构
在DocumentOpen中执行,
//当前段落级别(1~10 其中10为正文)
int currentoutlineLevel = -1;
//文档总段落数
int paragCount = 0;
//段落内容
_bstr_t paragraphText;
paragCount = Doc->Paragraphs->Count;
char strTmp[256] = {0};
_snprintf(strTmp,256,"段落数=%d",paragCount);
OutputDebugString(strTmp);
for (int i = 1;i < paragCount;i++)
{
currentoutlineLevel = (int)Doc->Paragraphs->Item(i)->OutlineLevel;
paragraphText = Doc->Paragraphs->Item(i)->Range->Text;
if (currentoutlineLevel < 10)//目录
{
_snprintf(strTmp,256,"目录 %d,级别=%d ******begin\r\n",i,currentoutlineLevel);
OutputDebugString(strTmp);
char *paragraphStr = paragraphText;
OutputDebugString(paragraphStr);
_snprintf(strTmp,256,"\r\n目录 %d,级别=%d ******end\r\n",i,currentoutlineLevel);
OutputDebugString(strTmp);
}
else
{
_snprintf(strTmp,256,"正文 %d ******begin\r\n",i);
OutputDebugString(strTmp);
char *paragraphStr = paragraphText;
OutputDebugString(paragraphStr);
_snprintf(strTmp,256,"\r\n正文 %d ******end\r\n",i);
OutputDebugString(strTmp);
}
}
获取当前光标所在段落值
_variant_t varTmp1;
varTmp1.vt = VT_INT;
varTmp1.intVal = (int)wdStory;
_variant_t varTmp2;
varTmp2.vt = VT_INT;
varTmp2.intVal = (int)wdExtend;
Sel->HomeKey(&varTmp1,&varTmp2); //选择从文档开始到光标所在位置的文本,方便确定已经选择的文档的段落数
int parageIndex = Sel->Paragraphs->Count; //已选择的段落数,也就是当前光标所在段落数
//执行下面两句的原因是因为上面的代码选择了从文档开始到光标所在位置的文本,执行完下面的语句清除选择,并且确保光标位置不变
Sel->MoveDown();
Sel->MoveUp();