ReadExcel


    CString FilePathName ;

        CFileDialog dlg(TRUE,"xls file(*.xls)|*.xls", NULL,
        
        OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
        
        "xls file(*.xls)|*.xls||");    //TRUE为OPEN对话框,FALSE为SAVE AS对话框
    
    if(dlg.DoModal()==IDOK)
    {
        FilePathName = dlg.GetPathName();
        GetDlgItem(IDC_EDIT1) -> SetWindowText( FilePathName ); 
    }

    if(database.IsOpen())
        database.Close();


        //读入EXCEL    
        CString sDriver = _T( "MICROSOFT EXCEL DRIVER (*.xls)" ); // Excel驱动
    
        CString sDsn;
        sDsn.Format(_T( "ODBC;DRIVER={%s};DSN='';DBQ=%s" ), sDriver, FilePathName);
    
        
        BOOL result =   database.Open(NULL, false , false , sDsn);        
        if(result)
        {
            AfxMessageBox("Open OK !");            
        }


//         CRecordset recset(&database);
//         
//         // 设置读取的查询语句.
//         sSql .Format( "SELECT Name, Age FROM %s ORDER BY Name " , "demo");
//         
//         
//         
//         // 执行查询语句
//         recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
//         // 获取查询结果
//         while (!recset.IsEOF())
//         {
//             //读取Excel内部数值
//             recset.GetFieldValue(_T( "Name" ), sItem1);
//             recset.GetFieldValue(_T( "Age" ), sItem2);
//             AfxMessageBox(sItem1+"--"+sItem2);
//             // 移到下一行
//             recset.MoveNext();
//         }

 
        // 关闭数据库
        database.Close();
 

//

void COutToExcel::TestRead()
{
    //读入EXCEL
 
    CString sItem1, sItem2,sItem3, sItem4;
    CString sDriver;
    CString sDsn;
    CString sFile = _T( "./data/SeriesData.xls" ); // 将被读取的Excel文件名
    
    // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
    sDriver = GetExcelDriver();
    if (sDriver.IsEmpty())
    {
        // 没有发现Excel驱动
        AfxMessageBox(_T( "没有安装Excel驱动!" ));
        return ;
    }
    
    // 创建进行存取的字符串
    sDsn.Format(_T( "ODBC;DRIVER={%s};DSN='';DBQ=%s" ), sDriver, sFile);
    
    TRY
    {
        // 打开数据库(既Excel文件)
        database.Open(NULL, false , false , sDsn);
        
        CRecordset recset(&database);     
        
        // 设置读取的查询语句.    从指定的表中选出的指定的列
        sSql .Format( _T("SELECT Name,Val,WeightMeter,UnitPrice FROM %s ORDER BY Name" ),"[天语二代$]" );    //, "天语二代" "Public_UnitPrice"
        
        // 执行查询语句
        recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);


        // 获取查询结果
        while (!recset.IsEOF())
        {
            //读取Excel内部数值
            //(Name,Val,WeightMeter,UnitPrice)
            recset.GetFieldValue(_T( "Name" ), sItem1);    
            recset.GetFieldValue(_T( "Val" ), sItem2);        
            recset.GetFieldValue(_T( "WeightMeter" ), sItem3);
            recset.GetFieldValue(_T( "UnitPrice" ), sItem4);
             
            if(sItem1 != "")
            {
                 AfxMessageBox(sItem1 + "--" + sItem2+ "--" + sItem3+ "--" + sItem4);
            }
            // 移到下一行
            recset.MoveNext();    

        }
        
        // 关闭数据库
        database.Close();
        
    }
    CATCH(CDBException, e)
    {
        // 数据库操作产生异常时...
        AfxMessageBox(_T( "数据库错误: " ) + e->m_strError);
    }
    END_CATCH;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值