baofengyoudian 2017-01-14 02:36 采纳率: 40%
浏览 1254
已结题

从网上找的MFC实现excel导入list控件

void CTSKYDlg::OnBnClickedOpenButton()
{
// TODO: Add your control notification handler code here

CFileDialog dlg( TRUE,              //TRUE或FALSE。TRUE为打开文件;FALSE为保存文件
                _T("xls"),          //为缺省的扩展名"FileList", //为显示在文件名组合框的编辑框的文件名,一般可选NULL 
                NULL,
                OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,   //为对话框风格,一般为OFN_HIDEREADONLY   |   OFN_OVERWRITEPROMPT,即隐藏只读选项和覆盖已有文件前提示。 
                _T("Excel 文件(*.xls)|*.xls||")       //为下拉列表枢中显示文件类型
                );

dlg.m_ofn.lpstrTitle = _T("导入数据");

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

CDatabase db;//数据库库需要包含头文件 #include
CString sDriver =_T("MICROSOFT EXCEL DRIVER (*.XLS)"); // Excel驱动
CString sSql,arr[3];
sSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),sDriver, strFilePath, strFilePath);
if(!db.OpenEx(sSql,CDatabase::noOdbcDialog))//连接数据源DJB.xls
{
MessageBox(_T("打开EXCEL文件失败!"),_T("错误"));
return;
}

//打开EXCEL表
CRecordset pset(&db);
m_tsky_list.DeleteAllItems();
AfxMessageBox(_T("OK"));
sSql.Format(_T("SELECT 学号,姓名,成绩 FROM DSO_DX"));
pset.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);
while(!pset.IsEOF())
{
pset.GetFieldValue(_T("学号"),arr[0]);//前面字段必须与表中的相同,否则出错。
pset.GetFieldValue(_T("姓名"),arr[1]);
pset.GetFieldValue(_T("成绩"),arr[2]);

int count = m_tsky_list.GetItemCount();//插入到ListCtrl中
m_tsky_list.InsertItem(count,arr[0]);
m_tsky_list.SetItemText(count,1,arr[1]);
m_tsky_list.SetItemText(count,2,arr[2]);
pset.MoveNext();
}
db.Close();

MessageBox(_T("Excel数据成功导入系统!"),_T("导入成功"));
}

//
//
//
//
//
//

问题

运行后,点击按钮导入文件后
程序执行到
sSql.Format(_T("SELECT 学号,姓名,成绩 FROM DSO_DX"));
报错!提示找不到DSO_DX这个表
请问这个表需要自己建吗还是excel自带的,
如果需要建立 要在那个数据库里建,给个参考文献也好
我用过sql server 数据库对这个不熟

  • 写回答

4条回答 默认 最新

  • threenewbee 2017-01-14 16:05
    关注

    是excel里面的,第一行作为列名,有没有DSO_DX

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致
  • ¥15 禅道二次开发编辑版本,上传不了发行包