从EXECL中读取一行数据

void CMapgistwoView::ReadOneRowFromExecl(long i, long n, Range m_range,_Worksheet m_sheet, CString *m_str)
{//从EXECL文件中读取指定行的数据
// i—行号
// n—数据列数
// m_str—存放读入的数据

m_range=m_sheet.GetRange(COleVariant(IndexToString(i, 1)),COleVariant(IndexToString(i, int(n))));
if(n<2l)
{
	m_str[0]=m_range.GetText().bstrVal;
	return;
}
VARIANT ret;
ret=m_range.GetValue2();
COleSafeArray sa(ret);//将读取的单元格数据存储到一个数组中
long index[2];//r行,c列单元格数据在sa中的索引号
int c;

for(c=1;c<=n;c++)
{
	index[0]=1;//构建r行的索引
	index[1]=c;//构建c行的索引
	sa.GetElement(index,&ret);//得到index的数据

	switch(ret.vt)
	{
		case VT_R8://数字类型
			m_str[c-1].Format("%.2f",ret.dblVal);
			break;
		case VT_BSTR://字符类型
			m_str[c-1]=ret.bstrVal;
			break;
		case VT_EMPTY://空
			m_str[c-1].Empty();
			break;
			
	}
}
VariantClear(&ret);
sa.Destroy();

}

CString CMapgistwoView::IndexToString( int row, int col )
{
// TODO: Add your control notification handler code here IndexToString
CString strResult;
if( col > 26 )
{
strResult.Format(_T("%c%c%d"),‘A’ + (col-1)/26-1,‘A’ + (col-1)%26,row);
}
else
{
strResult.Format(_T("%c%d"), ‘A’ + (col-1)%26,row);
}
return strResult;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值