怎么用VC++对EXCEL表格进行读取、排序、输出

2025-02-24 18:48:51
推荐回答(3个)
回答1:

EXCEL实际上是一个数据库,它的列就是数据库表的列字段,行就是数据库表的项,我这有通过ADO插入的代码,你可以反向一个,把插入换成读取。
_ConnectionPtr m_pConnect; //ADO对象,下同
_RecordsetPtr m_pRecordset;
CString sql;
sql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
sql+=strExcelFile;//EXCEL文件绝对路径+它自己的文件名。
sql+=";Extended Properties=Excel 8.0";
m_pConnect.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pConnect->Open((LPCSTR)sql,"","",adModeUnknown);
m_pRecordset->Open("select * from [iomstats]", m_pConnect.GetInterfacePtr(),
adOpenDynamic, adLockOptimistic,adCmdText);//[iomstats]就是excel左下的[sheet]修改名。
while(!m_pRecordset->adoEOF)
{
//修改行
if((LPCSTR)_bstr_t(m_pRecordset->GetCollect("times")) == strTime)
{
//_variant_t
ultoa(iomStats.dwNumOfDiskReads,charbuf,RADIX);
m_pRecordset->PutCollect("dwNumOfDiskReads",_variant_t(charbuf));
}
m_pRecordset->MoveNext();
}
m_pRecordset->Update();
m_pRecordset->Close();
m_pConnect->Close();

由于回答的地方不能排版,可能代码有错的地方,如果有问题给我回个信儿,给我个邮箱,我用记事本传给你。

回答2:

EXCEL实际上是一个数据库,它的列就是数据库表的列字段,行就是数据库表的项,我这有通过ADO插入的代码,你可以反向一个,把插入换成读取。
_ConnectionPtr m_pConnect; //ADO对象,下同
_RecordsetPtr m_pRecordset;
CString sql;
sql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
sql+=strExcelFile;//EXCEL文件绝对路径+它自己的文件名。
sql+=";Extended Properties=Excel 8.0";
m_pConnect.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pConnect->Open((LPCSTR)sql,"","",adModeUnknown);
m_pRecordset->Open("select * from [iomstats]", m_pConnect.GetInterfacePtr(),
adOpenDynamic, adLockOptimistic,adCmdText);//[iomstats]就是excel左下的[sheet]修改名。
while(!m_pRecordset->adoEOF)
{
//修改行
if((LPCSTR)_bstr_t(m_pRecordset->GetCollect("times")) == strTime)
{
//_variant_t
ultoa(iomStats.dwNumOfDiskReads,charbuf,RADIX);
m_pRecordset->PutCollect("dwNumOfDiskReads",_variant_t(charbuf));
}
m_pRecordset->MoveNext();
}
m_pRecordset->Update();
m_pRecordset->Close();
m_pConnect->Close();

回答3:

可以参考下csdn里面的这个: http://blog.csdn.net/harvic880925/article/details/7674441