在自动测试功能中,往往需要将最终结果写入测试细则文件(通常是word文件)。
而CVI自带的wordreport.c文件只有WordRpt_AddTable函数(添加表格),却没有获取已有表格句柄的函数。
通过查看WordRpt_AddTable函数的定义,发现其调用word2000.c的Word_TablesAddOld函数。在Word_TablesAddOld函数附近发现了Word_TablesItem函数,猜测就是获取已有表格句柄的底层函数。
1、在wordreport.c文件中添加WordRpt_GetTable函数
HRESULT CVIFUNC WordRpt_GetTable(CAObjHandle docHandle, int tableNum, CAObjHandle *tableHandle )
{
HRESULT error = S_OK;
ERRORINFO errorInfo;
CAObjHandle tablesHandleL = 0;
Word_GetProperty (docHandle, NULL, Word_DocumentTables,
CAVT_OBJHANDLE, &tablesHandleL);
Word_TablesItem (tablesHandleL, &errorInfo, tableNum, tableHandle);
return error;
}
2、在WordOpera.c文件中添加WriteCell_Word函数
int WriteCell_Word(int tableNum, int rownum,int colnum,char* wstr)
{
CAObjHandle tableHdl = 0;
WordRpt_GetTable(_docHandle1,tableNum,&tableHdl);
WordRpt_WriteToCell(tableHdl,rownum,colnum,wstr);
return 0;
}
3、测试代码
int CVICALLBACK TestCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
OpenFile_Word("D:\\test1.docx");
WriteCell_Word(2,2,1,"你好ABC");//第2个表的第2行第1列
CloseFile_Word();
break;
}
return 0;
}