星灵剑圣 2020-12-11 14:38 采纳率: 0%
浏览 92

MFC读取excel表格的内容,为什么会有内容没有读取到?

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);   //第一变量是行,第二个变量是列
			long fu;
			fu = (long)i + 1;
			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的数组中只有[第一轮,一,三,六]被读取到了,第二列全部都没有读取到

请问大神们能否告诉我这是为什么

  • 写回答

2条回答 默认 最新

  • Aet_Leng 2020-12-11 15:32
    关注

    你把第二列的条件放开试一下 或者打印一下vResult 看看里面应该是有数据的

    评论

报告相同问题?