lpDisp = books.Open(strFilePath, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional);
book.AttachDispatch(lpDisp);
sheets.AttachDispatch(book.get_Worksheets());
//sheet = sheets.get_Item(COleVariant((short)1));
lpDisp = book.get_ActiveSheet();
sheet.AttachDispatch(lpDisp);
range.AttachDispatch(sheet.get_Cells(),TRUE);
if (FUTUREa == 0 && var1 != L"") {
for (int i = 0; i < 1000;i++) {
range.AttachDispatch(range.get_Item(COleVariant((long)i+1), COleVariant((long)varr1)).pdispVal); //第一變數是行,第二個變數是列
vResult = range.get_Value2();
if (vResult.vt == VT_BSTR) //字串
{
str1[i] = vResult.bstrVal;
}
else if (vResult.vt == VT_R8 || vResult.vt == VT_R4) //8||4位元組的數字
{
str1[i].Format(_T("%f"), vResult.dblVal);
}
else if (vResult.vt == VT_I4) {
str1[i].Format(_T("%d"), vResult.dblVal);
}
if (str1[i] == L"" || str1[i] == "") {
FUTUREa = 1;
j = i-1;
break;
}
SetDlgItemText(IDC_EDIT7, str1[i]);
}
}
if (FUTUREa == 1 && var2 != L"") {
for (int i = 0; i < 1000; i++) {
range.AttachDispatch(range.get_Item(COleVariant((long)i+1), COleVariant((long)varr2)).pdispVal); //第一變數是行,第二個變數是列
vResult = range.get_Value2();
if (vResult.vt == VT_BSTR) //字串
{
str2[i] = vResult.bstrVal;
}
else if (vResult.vt == VT_R8) //8位元組的數字
{
str2[i].Format(_T("%f"), vResult.dblVal);
}
if (str2[i] == L"" || str2[i] == "") {
FUTUREa += 1;
break;
}
}
}
這兩個回圈是分別是用于讀取第一列和第二列的內容,但是當我程式運行完了之后,str1的陣列中只有[第一輪,一,三,六]被讀取到了,而str2陣列中全為空,第二列全部都沒有讀取到


uj5u.com熱心網友回復:
range.AttachDispatch(range.get_Item(COleVariant((long)i+1), COleVariant((long)varr1)).pdispVal);這個執行之后 前面選中的單元就沒用了
用一個新的單元
range2.AttachDispatch(range.get_Item(COleVariant((long)i+1), COleVariant((long)varr1)).pdispVal);
uj5u.com熱心網友回復:
如果把這個新單元也放在回圈里,回圈幾次后還是會出現單元格沒讀取到的情況,請問是因為回圈的原因還是別的原因?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/235772.html
標籤:基礎類
