描述:
//变量定义
_Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
Range iCell;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//创建Excel 2000服务器(启动Excel)
if(!app.CreateDispatch("Excel.Application"))
{
::MessageBox(NULL, "无法启动Excel服务器!", "温馨提示", MB_OK);
ExitThread(0);
return S_OK;
}
app.SetVisible(FALSE); //使Excel不可见
app.SetUserControl(TRUE); //允许其它用户控制Excel
//*****
//打开c:\\1.xls
books.AttachDispatch(app.GetWorkbooks());
lpDisp = books.Open(strDest,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional );
//*****
//得到Workbook
book.AttachDispatch(lpDisp);
//*****
//得到Worksheets
//sheets.AttachDispatch(book.GetWorksheets());
sheets = book.GetWorksheets();
sheet = sheets.GetItem(COleVariant(long(2)));
CString strPage1 = sheet.GetName();
pView->g_strHead = strPage1;
//*****
//读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列
Range usedRange;
usedRange.AttachDispatch(sheet.GetUsedRange());
range.AttachDispatch(usedRange.GetRows());
long iRowNum=range.GetCount(); //已经使用的行数
usedRange.AttachDispatch(sheet.GetUsedRange());
range.AttachDispatch(usedRange.GetColumns());
long iColNum=range.GetCount(); //已经使用的列数
long iStartRow=usedRange.GetRow(); //已使用区域的起始行,从1开始
long iStartCol=usedRange.GetColumn(); //已使用区域的起始列,从1开始
//*****
//读取第一个单元格的值
CString str;
range.AttachDispatch(sheet.GetCells());
//range = sheet.GetRange(COleVariant("A"), COleVariant("Z"));
// 取表头
for(int i = 1; i < 50; i++)
{
//*******************奇怪 我想去列的值,可是当i > 24 后就取不到数据, 不知道什么原因, 急
range.AttachDispatch(range.GetItem (COleVariant((long)1),COleVariant((long)i)).pdispVal );
vResult =range.GetText();
str = vResult.bstrVal;
pView->m_arRptHead.Add(str);
}