请问关于EXCE内容导入VC List列表的问题

凝重的天空 2015-10-26 09:56:04
CString strFilePath;//保存文件路径
CDatabase db;
CString sSql, sSqlInsert, sqlAll, arr[9];

CFileDialog dlg( TRUE, //TRUE或FALSE。TRUE为打开文件;FALSE为保存文件
"xls", //为缺省的扩展名
"学生信息列表", //为显示在文件名组合框的编辑框的文件名,一般可选NULL
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,//为对话框风格,一般为OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,即隐藏只读选项和覆盖已有文件前提示。
"Excel 文件(*.xls)|*.xls||"//为下拉列表枢中显示文件类型
);
dlg.m_ofn.lpstrTitle = "导入数据";
if (dlg.DoModal() != IDOK)
return;

//获得文件路径名
strFilePath = dlg.GetPathName();
//判断文件是否已经存在,存在则打开文件
DWORD dwRe = GetFileAttributes(strFilePath);
if ( dwRe != (DWORD)-1 )
{
//ShellExecute(NULL, NULL, strFilePath, NULL, NULL, SW_RESTORE);
}
else return;

CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel驱动
CString sql;
sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, strFilePath, strFilePath);
if(!db.OpenEx(sSql,CDatabase::noOdbcDialog))//连接数据源DJB.xls
{
MessageBox("打开EXCEL文件失败!","错误");
return;
}
CRecordset pset(&db);
m_StdInfoList.DeleteAllItems();

sql.Format(_T("SELECT * FROM 学生信息列表"));
pset.Open(CRecordset::forwardOnly,sql,CRecordset::readOnly);
CString sEducation = _T("无");
while(!pset.IsEOF())
{
//前面字段必须与表中的相同,否则出错。
pset.GetFieldValue(_T("学号"),arr[0]);
pset.GetFieldValue(_T("姓名"),arr[1]);
pset.GetFieldValue(_T("性别"),arr[2]);
pset.GetFieldValue(_T("出生日期"),arr[3]);
pset.GetFieldValue(_T("年级"),arr[4]);
pset.GetFieldValue(_T("班级"),arr[5]);
pset.GetFieldValue(_T("密码"),arr[6]);
pset.GetFieldValue(_T("备注"),arr[7]);

pset.MoveNext();
}
db.Close();


请看上面这代码,正常可以运行,但是EXCEL列表超过5行数据,这里就直接跳出while了,断点调试也看不出什么问题,请问有谁知道吗?
...全文
82 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧