2 baofengyoudian baofengyoudian 于 2017.01.14 10:36 提问

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

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 数据库对这个不熟

3个回答

justin_bkdrong
justin_bkdrong   2017.01.15 18:17

追加:如果数据库已经打开会报异常。

caozhy
caozhy   Ds   Rxr 2017.01.15 00:05

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

justin_bkdrong
justin_bkdrong   2017.01.15 18:13

http://wenku.baidu.com/link?url=dtPkeZ9L4WjlPUOipfLXwT-64HWs7vsvRarmwKTlT-ofRh0d_5NfQJ7e6P7KVa8e8BoOON4NIMN07uA4qd3g9u9_qbnLZIumlgo0QXU-uQK
上面是在百度上搜的

搜索关键字是:Excel数据库创建和调用
要设置列名为表的field,设置表名为 DSO_DX
图片说明

经试验完全OK的,没有问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC ListControl数据导出到Excel
参考网址: http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html
MFC ListControl与Excel 数据导入导出
MFC ListControl与Excel 数据导入导出Demo IDE:VS2010
Excel和List Control之间数据的导入导出
这是我在网上找的List Constrol 列表中的数据导出到Excel表格中的程序。而后我自己添加了将Excel表格中的数据导入到List Control中的功能。
MFC导入和导出excel
导入 BOOL CMainFrame::ExcelToADO(char *szPath, char *szTable) {     CoInitialize(NULL);     _Application excelApp;        Workbooks books;     _Workbook book;     Worksheets sheets;     _Wor
MFC list控件可编辑
MFC 实现List控件可编辑 实例代码
EXCEL表的MFC导入
                                                                EXCEL表的MFC导入       非网络环境的数据库应用程序,一般在更改环境时,都需要进行数据源的重置。但相比之下,针对文件数据库的数据源配置在应用程序没有写动态配置数据源的方法时,需要手动配置数据源。程序才能访问数据库文件。相比access数据库的.mdb数据库文件...
MFC实现excel的读写操作
这个是使用ODBC来完成的 第一步:建立基于对话框的MFC工程,命名为MfctoExc; 第二步:添加两个头文件到stdafx.h,          #include            #include 第三步:添加两个按钮控件和一个List Box控件,给List Box添加控制变量CListBox m_ExcelList; 第四步:给两个按钮添加两
MFC 的List Control控件实现可编辑
    所谓List Control,就是用来做LIist的,至于编辑,估计MS也没提供这个功能。比较诡异的是在给List Control设置属性的时候居然看到Edit Label,处于好奇点了点,发现只能修改第一列,改了之后失去焦点又变 回原来的文本。没有深入试下去,我估计可以修改第一列的数据。     其实要实现编辑功能,只要做一个Edit Control
MFC CListCtrl与Excel之间的数据导入导出
//从Excel中导入到CListCtrl中 void CluvlistctrlDlg::OnBnClickedInput() {  // TODO: Add your control notification handler code here  CFileDialog dlg( TRUE, //TRUE或FALSE。TRUE为打开文件;FALSE为保存文件       "xls",
MFC列表控件--List control
From:鸡啄米教程第28课 1.添加一个List Control控件,ID设置为IDC_PROGRAM_LANG_LIST,View属性设为Report,即为报表风格,Single Selection属性设为True(每次只能选一项);                                            为列表视图控件添加CListCtrl类型的控件变量m_program