现在我只完成了调用!
希望大侠帮助解决:
1。程序中的文档写进Word。(使用Range里的SetText吗?那Range
怎么得到!)
2。编排文档到固定位置!(需要哪些类)!
急!!分不够在给!
9 个解决方案
#1
问题1:
先得到Document对象,此对象下有一个content属性,它就是range对象。
问题2:
我不太明白你到底想做什么,建议用bookmark书签,要么用表格,这都好确定位置。要精确到某行某列就没有什么办法了。
先得到Document对象,此对象下有一个content属性,它就是range对象。
问题2:
我不太明白你到底想做什么,建议用bookmark书签,要么用表格,这都好确定位置。要精确到某行某列就没有什么办法了。
#2
void CWebOfficeCtrl::SetSign(LPCTSTR strRule, LPCTSTR strSign)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加调度处理程序代码
LPDISPATCH lpDisp;
lpDisp=m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->GetIDispatch();
_Application_Word m_WordApp;
_Document_Word m_WordDoc;
Documents_Word m_WordDocs;
Range_Word m_WordRange;
Tables_Word m_WordTables;
Table_Word m_WordTable;
Columns_Word m_WordColumns;
Cell_Word m_WordCell;
m_WordDoc.AttachDispatch(lpDisp,TRUE);
//m_WordDoc.Activate();
m_WordApp=m_WordDoc.GetApplication();
m_WordTables=m_WordDoc.GetTables();
DataPosition Position;
int iBeginPos,iEndPos,iBeginPos_,iEndPos_;
BOOL bInit,bAction,bInit_,bAction_;
bInit=TRUE;
bAction=FALSE;
CString m_RuleNode;
int iSerial;
iSerial=0;
int iSerialPos,iSerialPos_;
iSerialPos=0;
iSerialPos_=0;
BOOL bInit__,bAction__;
char pResult[5];
memset(pResult,0,5);
CString strRule_;
strRule_.Format("%s",strRule);
for(int iIndex=0;iIndex<strRule_.GetLength();iIndex++)
{
if(strRule_.GetAt(iIndex)=='#')
{
if(bInit)
{
iBeginPos=iIndex;
iEndPos=iIndex;
bInit=FALSE;
}
else
{
iBeginPos=iEndPos;
iEndPos=iIndex;
bAction=TRUE;
}
if(bAction)
{
m_RuleNode=strRule_.Mid(iBeginPos+1,iEndPos-iBeginPos-1);
bInit_=TRUE;
bAction_=FALSE;
for(int tIndex=0;tIndex<m_RuleNode.GetLength();tIndex++)
{
if(m_RuleNode.GetAt(tIndex)==',')
{
if(bInit_)
{
iBeginPos_=tIndex;
iEndPos_=tIndex;
bInit_=FALSE;
}
else
{
iBeginPos_=iEndPos_;
iEndPos_=tIndex;
bAction_=TRUE;
}
if(bAction_)
{
sprintf(pResult,"%s",m_RuleNode.Mid(iBeginPos_+1,iEndPos_-iBeginPos_-1));
if(iSerial==3)
{
iSerial=0;
}
switch(iSerial)
{
case 0:
Position.iTableSerial=atoi(pResult);
break;
case 1:
Position.iRow=atoi(pResult);
break;
case 2:
Position.iCol=atoi(pResult);
m_WordTable=m_WordTables.Item(Position.iTableSerial);
m_WordCell=m_WordTable.Cell(Position.iRow,Position.iCol);
m_WordRange=m_WordCell.GetRange();
iSerialPos++;
bInit__=TRUE;
bAction__=FALSE;
iSerialPos_=0;
m_WordRange.SetText(strSign);
m_WordTable.ReleaseDispatch();
m_WordRange.ReleaseDispatch();
m_WordCell.ReleaseDispatch();
break;
default:
break;
}
iSerial++;
bAction_=FALSE;
}
}
}
bAction=FALSE;
}
}
}
m_WordTables.ReleaseDispatch();
m_WordDoc.ReleaseDispatch();
m_WordApp.ReleaseDispatch();
}
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加调度处理程序代码
LPDISPATCH lpDisp;
lpDisp=m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->GetIDispatch();
_Application_Word m_WordApp;
_Document_Word m_WordDoc;
Documents_Word m_WordDocs;
Range_Word m_WordRange;
Tables_Word m_WordTables;
Table_Word m_WordTable;
Columns_Word m_WordColumns;
Cell_Word m_WordCell;
m_WordDoc.AttachDispatch(lpDisp,TRUE);
//m_WordDoc.Activate();
m_WordApp=m_WordDoc.GetApplication();
m_WordTables=m_WordDoc.GetTables();
DataPosition Position;
int iBeginPos,iEndPos,iBeginPos_,iEndPos_;
BOOL bInit,bAction,bInit_,bAction_;
bInit=TRUE;
bAction=FALSE;
CString m_RuleNode;
int iSerial;
iSerial=0;
int iSerialPos,iSerialPos_;
iSerialPos=0;
iSerialPos_=0;
BOOL bInit__,bAction__;
char pResult[5];
memset(pResult,0,5);
CString strRule_;
strRule_.Format("%s",strRule);
for(int iIndex=0;iIndex<strRule_.GetLength();iIndex++)
{
if(strRule_.GetAt(iIndex)=='#')
{
if(bInit)
{
iBeginPos=iIndex;
iEndPos=iIndex;
bInit=FALSE;
}
else
{
iBeginPos=iEndPos;
iEndPos=iIndex;
bAction=TRUE;
}
if(bAction)
{
m_RuleNode=strRule_.Mid(iBeginPos+1,iEndPos-iBeginPos-1);
bInit_=TRUE;
bAction_=FALSE;
for(int tIndex=0;tIndex<m_RuleNode.GetLength();tIndex++)
{
if(m_RuleNode.GetAt(tIndex)==',')
{
if(bInit_)
{
iBeginPos_=tIndex;
iEndPos_=tIndex;
bInit_=FALSE;
}
else
{
iBeginPos_=iEndPos_;
iEndPos_=tIndex;
bAction_=TRUE;
}
if(bAction_)
{
sprintf(pResult,"%s",m_RuleNode.Mid(iBeginPos_+1,iEndPos_-iBeginPos_-1));
if(iSerial==3)
{
iSerial=0;
}
switch(iSerial)
{
case 0:
Position.iTableSerial=atoi(pResult);
break;
case 1:
Position.iRow=atoi(pResult);
break;
case 2:
Position.iCol=atoi(pResult);
m_WordTable=m_WordTables.Item(Position.iTableSerial);
m_WordCell=m_WordTable.Cell(Position.iRow,Position.iCol);
m_WordRange=m_WordCell.GetRange();
iSerialPos++;
bInit__=TRUE;
bAction__=FALSE;
iSerialPos_=0;
m_WordRange.SetText(strSign);
m_WordTable.ReleaseDispatch();
m_WordRange.ReleaseDispatch();
m_WordCell.ReleaseDispatch();
break;
default:
break;
}
iSerial++;
bAction_=FALSE;
}
}
}
bAction=FALSE;
}
}
}
m_WordTables.ReleaseDispatch();
m_WordDoc.ReleaseDispatch();
m_WordApp.ReleaseDispatch();
}
#3
To 大侠: gjd111686(数字金刚)
DataPosition 是什么??是MSWORD9。odl中的吗?怎么得到啊?
DataPosition 是什么??是MSWORD9。odl中的吗?怎么得到啊?
#4
对不起,是我自己定义的一个结构.
struct DataPosition
{
int iTableSerial;
int iRow;
int iCol;
};
struct DataPosition
{
int iTableSerial;
int iRow;
int iCol;
};
#5
我估计也是!谢谢了,我再试试:)
#6
发信给我,我这有些关于这方面的例子。
xjliu_ustc@tom.com
xjliu_ustc@tom.com
#7
首先要知道文档的格式,然后再编程的。知道了文档的格式,就好做了。
#8
怎么最近大家都做这个?呵呵,我来学习!
#9
做完了给我个例子,兄弟!
caiyfcnln@hotmail.com
caiyfcnln@hotmail.com
#1
问题1:
先得到Document对象,此对象下有一个content属性,它就是range对象。
问题2:
我不太明白你到底想做什么,建议用bookmark书签,要么用表格,这都好确定位置。要精确到某行某列就没有什么办法了。
先得到Document对象,此对象下有一个content属性,它就是range对象。
问题2:
我不太明白你到底想做什么,建议用bookmark书签,要么用表格,这都好确定位置。要精确到某行某列就没有什么办法了。
#2
void CWebOfficeCtrl::SetSign(LPCTSTR strRule, LPCTSTR strSign)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加调度处理程序代码
LPDISPATCH lpDisp;
lpDisp=m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->GetIDispatch();
_Application_Word m_WordApp;
_Document_Word m_WordDoc;
Documents_Word m_WordDocs;
Range_Word m_WordRange;
Tables_Word m_WordTables;
Table_Word m_WordTable;
Columns_Word m_WordColumns;
Cell_Word m_WordCell;
m_WordDoc.AttachDispatch(lpDisp,TRUE);
//m_WordDoc.Activate();
m_WordApp=m_WordDoc.GetApplication();
m_WordTables=m_WordDoc.GetTables();
DataPosition Position;
int iBeginPos,iEndPos,iBeginPos_,iEndPos_;
BOOL bInit,bAction,bInit_,bAction_;
bInit=TRUE;
bAction=FALSE;
CString m_RuleNode;
int iSerial;
iSerial=0;
int iSerialPos,iSerialPos_;
iSerialPos=0;
iSerialPos_=0;
BOOL bInit__,bAction__;
char pResult[5];
memset(pResult,0,5);
CString strRule_;
strRule_.Format("%s",strRule);
for(int iIndex=0;iIndex<strRule_.GetLength();iIndex++)
{
if(strRule_.GetAt(iIndex)=='#')
{
if(bInit)
{
iBeginPos=iIndex;
iEndPos=iIndex;
bInit=FALSE;
}
else
{
iBeginPos=iEndPos;
iEndPos=iIndex;
bAction=TRUE;
}
if(bAction)
{
m_RuleNode=strRule_.Mid(iBeginPos+1,iEndPos-iBeginPos-1);
bInit_=TRUE;
bAction_=FALSE;
for(int tIndex=0;tIndex<m_RuleNode.GetLength();tIndex++)
{
if(m_RuleNode.GetAt(tIndex)==',')
{
if(bInit_)
{
iBeginPos_=tIndex;
iEndPos_=tIndex;
bInit_=FALSE;
}
else
{
iBeginPos_=iEndPos_;
iEndPos_=tIndex;
bAction_=TRUE;
}
if(bAction_)
{
sprintf(pResult,"%s",m_RuleNode.Mid(iBeginPos_+1,iEndPos_-iBeginPos_-1));
if(iSerial==3)
{
iSerial=0;
}
switch(iSerial)
{
case 0:
Position.iTableSerial=atoi(pResult);
break;
case 1:
Position.iRow=atoi(pResult);
break;
case 2:
Position.iCol=atoi(pResult);
m_WordTable=m_WordTables.Item(Position.iTableSerial);
m_WordCell=m_WordTable.Cell(Position.iRow,Position.iCol);
m_WordRange=m_WordCell.GetRange();
iSerialPos++;
bInit__=TRUE;
bAction__=FALSE;
iSerialPos_=0;
m_WordRange.SetText(strSign);
m_WordTable.ReleaseDispatch();
m_WordRange.ReleaseDispatch();
m_WordCell.ReleaseDispatch();
break;
default:
break;
}
iSerial++;
bAction_=FALSE;
}
}
}
bAction=FALSE;
}
}
}
m_WordTables.ReleaseDispatch();
m_WordDoc.ReleaseDispatch();
m_WordApp.ReleaseDispatch();
}
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加调度处理程序代码
LPDISPATCH lpDisp;
lpDisp=m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->GetIDispatch();
_Application_Word m_WordApp;
_Document_Word m_WordDoc;
Documents_Word m_WordDocs;
Range_Word m_WordRange;
Tables_Word m_WordTables;
Table_Word m_WordTable;
Columns_Word m_WordColumns;
Cell_Word m_WordCell;
m_WordDoc.AttachDispatch(lpDisp,TRUE);
//m_WordDoc.Activate();
m_WordApp=m_WordDoc.GetApplication();
m_WordTables=m_WordDoc.GetTables();
DataPosition Position;
int iBeginPos,iEndPos,iBeginPos_,iEndPos_;
BOOL bInit,bAction,bInit_,bAction_;
bInit=TRUE;
bAction=FALSE;
CString m_RuleNode;
int iSerial;
iSerial=0;
int iSerialPos,iSerialPos_;
iSerialPos=0;
iSerialPos_=0;
BOOL bInit__,bAction__;
char pResult[5];
memset(pResult,0,5);
CString strRule_;
strRule_.Format("%s",strRule);
for(int iIndex=0;iIndex<strRule_.GetLength();iIndex++)
{
if(strRule_.GetAt(iIndex)=='#')
{
if(bInit)
{
iBeginPos=iIndex;
iEndPos=iIndex;
bInit=FALSE;
}
else
{
iBeginPos=iEndPos;
iEndPos=iIndex;
bAction=TRUE;
}
if(bAction)
{
m_RuleNode=strRule_.Mid(iBeginPos+1,iEndPos-iBeginPos-1);
bInit_=TRUE;
bAction_=FALSE;
for(int tIndex=0;tIndex<m_RuleNode.GetLength();tIndex++)
{
if(m_RuleNode.GetAt(tIndex)==',')
{
if(bInit_)
{
iBeginPos_=tIndex;
iEndPos_=tIndex;
bInit_=FALSE;
}
else
{
iBeginPos_=iEndPos_;
iEndPos_=tIndex;
bAction_=TRUE;
}
if(bAction_)
{
sprintf(pResult,"%s",m_RuleNode.Mid(iBeginPos_+1,iEndPos_-iBeginPos_-1));
if(iSerial==3)
{
iSerial=0;
}
switch(iSerial)
{
case 0:
Position.iTableSerial=atoi(pResult);
break;
case 1:
Position.iRow=atoi(pResult);
break;
case 2:
Position.iCol=atoi(pResult);
m_WordTable=m_WordTables.Item(Position.iTableSerial);
m_WordCell=m_WordTable.Cell(Position.iRow,Position.iCol);
m_WordRange=m_WordCell.GetRange();
iSerialPos++;
bInit__=TRUE;
bAction__=FALSE;
iSerialPos_=0;
m_WordRange.SetText(strSign);
m_WordTable.ReleaseDispatch();
m_WordRange.ReleaseDispatch();
m_WordCell.ReleaseDispatch();
break;
default:
break;
}
iSerial++;
bAction_=FALSE;
}
}
}
bAction=FALSE;
}
}
}
m_WordTables.ReleaseDispatch();
m_WordDoc.ReleaseDispatch();
m_WordApp.ReleaseDispatch();
}
#3
To 大侠: gjd111686(数字金刚)
DataPosition 是什么??是MSWORD9。odl中的吗?怎么得到啊?
DataPosition 是什么??是MSWORD9。odl中的吗?怎么得到啊?
#4
对不起,是我自己定义的一个结构.
struct DataPosition
{
int iTableSerial;
int iRow;
int iCol;
};
struct DataPosition
{
int iTableSerial;
int iRow;
int iCol;
};
#5
我估计也是!谢谢了,我再试试:)
#6
发信给我,我这有些关于这方面的例子。
xjliu_ustc@tom.com
xjliu_ustc@tom.com
#7
首先要知道文档的格式,然后再编程的。知道了文档的格式,就好做了。
#8
怎么最近大家都做这个?呵呵,我来学习!
#9
做完了给我个例子,兄弟!
caiyfcnln@hotmail.com
caiyfcnln@hotmail.com