2024年4月19日发(作者:)
ADO读写EXCEL
用ADO读写EXCEL。操作部分代码如下:
//打开excel数据文件
::CoInitialize(NULL);
_RecordsetPtr m_pRecordset("set");
_ConnectionPtr m_pConnection("tion");
m_Instance("tion");
CString adoinfo;
adoinfo="Provider=.4.0;Data Source="+filepath
+";Extended
Properties=Excel 8.0;Persist Security Info=False";//filepat
h是文件路径
m_pConnection->Open((_bstr_t)adoinfo,"","",adModeUnknown);
if(m_pConnection==NULL)
MessageBox("打开文件错误");
//打开sheet 1工作表、处理数据
//1、打开SHEET1工作表并读出班级字段等于nClass的记录
m_Instance(__uuidof(Recordset));
("select * from [Sheet1$] WHERE 班级
=%d",nClass);
m_pRecordset->Open((_bstr_t)tiaojian,
_variant_t((IDispatch *)m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
//2、获得记录数量
long ab;
m_pRecordset->get_RecordCount(&ab);
//3、把数据指针指向第一条记录
m_pRecordset->MoveFirst();
//4、读出第一条记录里面的值
CString ztemp;
ztemp=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("数
学成绩"))-
>Value);
//这样就得到了本条记录“数学成绩”列的值了。如果是数值的话转下就
可以了。
//5、指向下一条记录
m_pRecordset->MoveNext();
//6、创建表
m_pConnection->Execute("CREATE TABLE 成绩统计(班级 TEXT,学
科 TEXT,总人数
INTEGER,总分 INTEGER,平均分 SINGLE,
及格人数 INTEGER,
及格率 SINGLE,高分人数 INTEGER,高分
率 SINGLE)",
&ra,adCmdText);
//7、写数据(新创建的表需要先打开,下面是向新记录的'学科'字段填文本数
据)
m_pRecordset->Fields->GetItem(_variant_t("学科"))->Value=_bstr_t("
语文");
//工作结束,打扫战场
if(m_pRecordset->State)
m_pRecordset->Close();
m_pRecordset=NULL;
if( m_pConnection->State )
m_pConnection->Close();
m_pConnection = NULL;
::CoUninitialize();
excel文件所谓的字段就是第一行。


发布评论