回答如何读取里面的内容:
Range rgMyRge;
rgMyRge.AttachDispatch(sheet.GetCells(),true);
_variant_t value=rgMyRge.GetItem(_variant_t((long)rowIndex),_variant_t((long)colIndex));
Range rgMyRge;
rgMyRge.AttachDispatch(sheet.GetCells(),true);
_variant_t value=rgMyRge.GetItem(_variant_t((long)rowIndex),_variant_t((long)colIndex));
long rows=rgMyRge.GetRow();
long cols=rgMyRge.GetCol();
代码如下:
Worksheets sheets;
_Worksheet sheet;
Range rgMyRge;
CString str; sheets=book.GetWorksheets();
for(int i=0;i<sheets.GetCount();i++)
{
sheet=sheets.GetItem(COleVariant(long(i+1)));
rgMyRge.AttachDispatch(sheet.GetCells(),TRUE);
str.Format("Row=%d,Col=%d",rgMyRge.GetRow(),rgMyRge.GetColumn());
MessageBox(sheet.GetName(),str);//取得所有表名
}
long cols=rgMyRge.GetCol();
rgMyRge.AttachDispatch(sheet.GetUsedRange(),true); rgMyRge.AttachDispatch(rgMyRge.GetColumns(),true);
long cols=rgMyRge.GetCount(); //得到列数
rgMyRge.AttachDispatch(rgMyRge.GetRows(),true);
long rows=rgMyRge.GetCount();//得到行数
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//得到所有的列
rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true)
//得到所有的行
rgMyRge.AttachDispatch(wsMysheet.GetRows(),true)
rgMyRge.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
Book.ReleaseDispatch();
Books.ReleaseDispatch();
app.ReleaseDispatch();
以下是完整的程序片段:::
void CTestDlg::OnButton4()
{
_Application app;
if(!app.CreateDispatch("Excel.Application"))
{
MessageBox("Could't start Excel!");
return;
}else
{
MessageBox("Start!");
}
Workbooks books;
_Workbook book;
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
books=app.GetWorkbooks();
book= books.Open("C:\\Book1.xls",
VOptional, VOptional, VOptional, VOptional,
VOptional, VOptional, VOptional, VOptional,
VOptional, VOptional, VOptional, VOptional); Worksheets sheets;
_Worksheet sheet;
Range rgMyRge;
CString str; sheets=book.GetWorksheets();
for(int i=0;i<sheets.GetCount();i++)
{
sheet=sheets.GetItem(COleVariant(long(1))); rgMyRge.AttachDispatch(sheet.GetUsedRange(),TRUE);
rgMyRge.AttachDispatch(rgMyRge.GetRows(),TRUE);
str.Format("%d",rgMyRge.GetCount());
MessageBox(sheet.GetName(),str);//取得所有表名
} //释放对象
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
app.ReleaseDispatch();
}
book.AttachDispatch(books.Open("C:\\Book1.xls",
VOptional, VOptional, VOptional, VOptional,
VOptional, VOptional, VOptional, VOptional,
VOptional, VOptional, VOptional, VOptional);
//得到Worksheets
sheets.AttachDispatch(Book.GetWorksheets(),true);
books.Close();
books.ReleaseDispatch();
app.ReleaseDispatch();
在程序退出的时候,excel进程就会消失了