我想在excel中讀取某一儲存格的內容, 寫我已經辦到了, 但讀是如何做呢?
是不是用
CString newValue;
newValue=range.GetItem(COleVariant((long)(1)),COleVariant((long)(1))).bstrVal;
但我在newValue中根本看不到我所要的儲存格中"abcd"等字符.上面的語句有問題嗎?
程式如下:
_Application app; // app is an _Application object.
_Workbook book; // More object declarations.
_Worksheet sheet;
Workbooks books;
Worksheets sheets;
Range range; // Used for Microsoft Excel 97 components.
LPDISPATCH lpDisp; // Often reused variable.
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Couldn't CreateDispatch() for Excel");
return;
}
app.SetVisible(TRUE);
lpDisp = app.GetWorkbooks(); // Get an IDispatch pointer.
ASSERT(lpDisp);
books.AttachDispatch(lpDisp); // Attach the IDispatch pointer
// to the books object.
lpDisp=books.Open("g:\\xls\\book1.xls", // *.xls is a workbook.
covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional); // Return Workbook's IDispatch pointer. book.AttachDispatch( lpDisp );
lpDisp = book.GetSheets();
ASSERT(lpDisp);
sheets.AttachDispatch(lpDisp);
// Get sheet #1 and attach the IDispatch pointer to your sheet
// object.
lpDisp = sheets.GetItem( COleVariant((short)(1)) );
ASSERT(lpDisp);
sheet.AttachDispatch(lpDisp);
lpDisp = sheet.GetRange(COleVariant("A1"), COleVariant("A10"));
range.AttachDispatch(lpDisp);
range.SetNumberFormat(COleVariant("@"));
VARIANT newValue;
CString a;
//COleVariant(LPCTSTR("111111"))
//newValue=range.GetItem(_variant_t((long)1),vtMissing).pdispVal;
a=range.GetItem(COleVariant((long)(1)),COleVariant((long)(1))).bstrVal;
//range.GetItem(COleVariant((long)(1)),COleVariant((long)(1))); //rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
// range.AttachDispatch(range.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
//a=newValue.bstrVal;
//SET FONT color:
Font newfont;
lpDisp=range.GetFont();
newfont.AttachDispatch(lpDisp);
//newfont.SetColor(COleVariant(short RGB(255,0,0)));
newfont.SetColor(COleVariant(long RGB(0,0,255)));
// range.SetItem(COleVariant((long)(1)),COleVariant((long)(1)),COleVariant(LPCTSTR("111111")));
CString newValue;
newValue=range.GetItem(COleVariant((long)(1)),COleVariant((long)(1))).bstrVal; 謝謝!
是不是用
CString newValue;
newValue=range.GetItem(COleVariant((long)(1)),COleVariant((long)(1))).bstrVal;
但我在newValue中根本看不到我所要的儲存格中"abcd"等字符.上面的語句有問題嗎?
程式如下:
_Application app; // app is an _Application object.
_Workbook book; // More object declarations.
_Worksheet sheet;
Workbooks books;
Worksheets sheets;
Range range; // Used for Microsoft Excel 97 components.
LPDISPATCH lpDisp; // Often reused variable.
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Couldn't CreateDispatch() for Excel");
return;
}
app.SetVisible(TRUE);
lpDisp = app.GetWorkbooks(); // Get an IDispatch pointer.
ASSERT(lpDisp);
books.AttachDispatch(lpDisp); // Attach the IDispatch pointer
// to the books object.
lpDisp=books.Open("g:\\xls\\book1.xls", // *.xls is a workbook.
covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional); // Return Workbook's IDispatch pointer. book.AttachDispatch( lpDisp );
lpDisp = book.GetSheets();
ASSERT(lpDisp);
sheets.AttachDispatch(lpDisp);
// Get sheet #1 and attach the IDispatch pointer to your sheet
// object.
lpDisp = sheets.GetItem( COleVariant((short)(1)) );
ASSERT(lpDisp);
sheet.AttachDispatch(lpDisp);
lpDisp = sheet.GetRange(COleVariant("A1"), COleVariant("A10"));
range.AttachDispatch(lpDisp);
range.SetNumberFormat(COleVariant("@"));
VARIANT newValue;
CString a;
//COleVariant(LPCTSTR("111111"))
//newValue=range.GetItem(_variant_t((long)1),vtMissing).pdispVal;
a=range.GetItem(COleVariant((long)(1)),COleVariant((long)(1))).bstrVal;
//range.GetItem(COleVariant((long)(1)),COleVariant((long)(1))); //rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
// range.AttachDispatch(range.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
//a=newValue.bstrVal;
//SET FONT color:
Font newfont;
lpDisp=range.GetFont();
newfont.AttachDispatch(lpDisp);
//newfont.SetColor(COleVariant(short RGB(255,0,0)));
newfont.SetColor(COleVariant(long RGB(0,0,255)));
// range.SetItem(COleVariant((long)(1)),COleVariant((long)(1)),COleVariant(LPCTSTR("111111")));
CString newValue;
newValue=range.GetItem(COleVariant((long)(1)),COleVariant((long)(1))).bstrVal; 謝謝!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货