ado excel读取

_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
CString tableName;
pConnection.CreateInstance("ADODB.Connection");//两种初始化只能ADO只能指针的方式
pRecordset.CreateInstance (__uuidof(Recordset));
CString adoinfo;
//m_PathName是Excel文件的全路径
adoinfo.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Excel 8.0"),m_PathName);//连接Excel2003,其它版本连接串不一样
	try                 
	{  
		pConnection->Open((_bstr_t)adoinfo,"","",adModeUnknown);
		
		//读取表名
		pRecordset = NULL;
		pRecordset = pConnection->OpenSchema(adSchemaTables);
		_bstr_t table_name;
		CStringArray table_array;	
		while(!pRecordset->adoEOF)//获得表名
		{
			table_name = pRecordset->Fields->GetItem("TABLE_NAME")->Value;
			tableName=(LPCSTR)table_name;
			pRecordset->MoveNext();
			table_array.Add(tableName);
		}
for(int inTable=0;inTable<table_array.GetSize();inTable++)//循环查询工作表,选择出储存数据的工作薄
		{
			pRecordset->Close();
			pRecordset.Release();
			pRecordset=NULL;
			pRecordset.CreateInstance (__uuidof(Recordset));//每次Release连接对象以后,都要重新初始化连接对象。
			

			CString strSQL;
			strSQL.Format("SELECT * FROM [%s]",table_array.GetAt(inTable));
try
			{
				pRecordset->Open(_bstr_t(strSQL),                // 查询DemoTable表中所有字段
					pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
					adOpenForwardOnly,//adOpenDynamic,adOpenKeyset
					adLockOptimistic,
					adCmdText);
				
			}
			catch(_com_error e)
			{
				EndWaitCursor(); 
				AfxMessageBox(e.Description()); 
				return false;
			}
//到这里就获取了一个Excel文件中一个表的所有数据的记录。
//	pRecordset->GetFields()->GetCount ();	获取表中的字段数
//获取序号为index的字段名
//b_FieldName=pRecordset->GetFields()->GetItem(_variant_t(long(index)))->GetName()
//获取指定当前记录指定字段(井名)的值
//pRecordset->GetFields()->GetItem(_variant_t("井名"))->Value
//pRecordset->MoveNext();移动到下条记录
//pRecordset->MoveFirst() 移动到第一条记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值