vs2008下用MFC讀寫excel檔案
阿新 • • 發佈:2019-02-04
CApplication app1;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;
CRange iCell;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
if(!app1.CreateDispatch(_T("Excel.Application"),NULL))
{
AfxMessageBox(_T("無法啟動Excel伺服器!"));
return;
}
books.AttachDispatch(app1.get_Workbooks());
lpDisp = books.Open("D:\\test.xlsx",covOptional, covOptional, covOptional , covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional,covOptional);
//得到Workbook
book.AttachDispatch(lpDisp);
//得到Worksheets
sheets.AttachDispatch(book.get_Worksheets());
//得到當前活躍sheet
//如果有單元格正處於編輯狀態中,此操作不能返回,會一直等待
lpDisp=book.get_ActiveSheet();
sheet.AttachDispatch(lpDisp);
//讀取第一個單元格的值
range.AttachDispatch(sheet.get_Cells());
range.AttachDispatch(range.get_Item (COleVariant((long)2),COleVariant((long)1)).pdispVal );
vResult=range.get_Value2();
CString str;
if(vResult.vt==VT_BSTR) //字串
{
str=vResult.bstrVal;
}
else if (vResult.vt==VT_R8) //8位元組的數字
{
str.Format("%f",vResult.dblVal);
}
// app1.put_Visible(TRUE);
//app1.put_UserControl(TRUE);
books.Close();
app1.Quit(); // 退出
//釋放物件
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
app1.ReleaseDispatch();
//OnOK();
MessageBox(str);
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;
CRange iCell;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
if(!app1.CreateDispatch(_T("Excel.Application"),NULL))
{
AfxMessageBox(_T("無法啟動Excel伺服器!"));
return;
}
books.AttachDispatch(app1.get_Workbooks());
lpDisp = books.Open("D:\\test.xlsx",covOptional, covOptional, covOptional , covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional,covOptional);
//得到Workbook
book.AttachDispatch(lpDisp);
//得到Worksheets
sheets.AttachDispatch(book.get_Worksheets());
//得到當前活躍sheet
//如果有單元格正處於編輯狀態中,此操作不能返回,會一直等待
lpDisp=book.get_ActiveSheet();
sheet.AttachDispatch(lpDisp);
//讀取第一個單元格的值
range.AttachDispatch(sheet.get_Cells());
range.AttachDispatch(range.get_Item (COleVariant((long)2),COleVariant((long)1)).pdispVal );
vResult=range.get_Value2();
CString str;
if(vResult.vt==VT_BSTR) //字串
{
str=vResult.bstrVal;
}
else if (vResult.vt==VT_R8) //8位元組的數字
{
str.Format("%f",vResult.dblVal);
}
// app1.put_Visible(TRUE);
//app1.put_UserControl(TRUE);
books.Close();
app1.Quit(); // 退出
//釋放物件
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
app1.ReleaseDispatch();
//OnOK();
MessageBox(str);