vs2008控制Excel表格有关问题

vs2008控制Excel表格问题
vs2008控制Excel表格有关问题
我使用mfc控制表格,但是我要实现的功能是在mfc上点打印预览后,把相应数据在表格中预览,点表格上的关闭预览后会退出到表格界面。现在我想实现点关闭预览后直接关闭整个表格。这样要怎么设置?

------解决方案--------------------

_Application app;
LPDISPATCH lpDisp;
if ( !app.CreateDispatch("Excel.Application") )
{
TRACE("Create Application Failed! and the errorCode is :%d\r\n", \
GetLastError());
return;
}

app.SetVisible(TRUE);
app.SetUserControl(TRUE);

//创建书籍对象
Workbooks books;
books.AttachDispatch(app.GetWorkbooks());

//excel路径
char chBufferExcelPath[1024] = {0};
sprintf(chBufferExcelPath, "%s", "D:\\test\\test.xls");

//定义打开属性行为变量
 COleVariant  avar((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

 //打开excel
lpDisp = books.Open(chBufferExcelPath, avar, avar, avar, avar, avar, avar,\
avar, avar, avar, avar, avar, avar, avar, avar);

//打开文件
_Workbook book;
book.AttachDispatch(lpDisp);
books.AttachDispatch(book.GetWorksheets());

//获取所有可操作sheets
Worksheets sheets;
sheets.AttachDispatch(book.GetWorksheets());

//获取要进行操作的sheet
_Worksheet sheet;
sheet.AttachDispatch(sheets.GetItem(COleVariant("Sheet1")));

//添加行操作
//sheet.
//添加行操作

//
Range range;
Range usedRange;

usedRange.AttachDispatch(sheet.GetUsedRange());
range.AttachDispatch(usedRange.GetRows());
long iRowNum=range.GetCount();                   //已经使用的行数

range.AttachDispatch(usedRange.GetColumns());
long iColNum=range.GetCount();                   //已经使用的列数

long iStartRow=usedRange.GetRow();               //已使用区域的起始行,从1开始
long iStartCol=usedRange.GetColumn();            //已使用区域的起始列,从1开始
/*
//绑定可操作sheet行
usedRange.AttachDispatch(sheet.GetUsedRange());
range.AttachDispatch(usedRange.GetRows());

long iRowNum=range.GetCount();//已经使用的行数
range.AttachDispatch(sheet.GetCells());

*/
range.AttachDispatch(sheet.GetCells());
//range.Get
VARIANT var = range.GetItem(COleVariant(long(1)),COleVariant((long)1));
range.AttachDispatch(var.pdispVal);

COleVariant vResult;
vResult = range.GetValue(vResult);
TRACE("%ws\r\n", vResult.bstrVal);
TRACE("%d\r\n", GetLastError());
/*
VARIANT var = range.GetItem(COleVariant(long(iRowNum)), COleVariant(long(1)));
var = range.GetItem(COleVariant(long(iRowNum)), COleVariant(long(2)));
var = range.GetItem(COleVariant(long(iRowNum)), COleVariant(long(3)));
*/
//修改

range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(1)),/*COleVariant("kevin")*/vResult);
//range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(2)),COleVariant("20"));
//range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(3)),COleVariant("male"));
iColNum = 0;
while ( true)
{
Sleep(50);
iColNum += 50;
if ( iColNum > 50*20*20 )
break;
}
range.ReleaseDispatch();
//save and close