vc/mfc Dialog项目小弟根据http://www.vckbase.com/document/viewdoc/?id=421提供的方法,实现了通过ODBC读取Excel文件的功能,并将读取的内容逐行插入到数据库中。不过出现一个小小的问题,如果将Excel中的整数插入到数据库中varchar类型的字段中,那么就会出现这种情况:如EXCEL中是123,则插入到数据库中的时候就成了123.0,所有的整数都会出现这种问题。有没有办法解决这个问题啊?即在EXCEL中是123,那么插入到数据库的时候就还是123请各位大侠指点一下,谢谢!学习,关注……

解决方案 »

  1.   

    楼主的说明:
    小弟想把我的代码帖一下吧,有兴趣的话,可以试试我的代码。
    void CXXXXXX::OnBnClickedXXXXX()
    {
    try
    {
    CDatabase db, db1;
    CString sSql, Sql;
    CString sItem[12];
    CString sDsn;
    CString pathName;
    CFileDialog dlg(TRUE,//Save;
    "xls",NULL,OFN_HIDEREADONLY, "Microsoft Excel 2000 (*.xls)|*.xls|所有文件(*.*)|*.*||",this);
    if(dlg.DoModal() == IDOK)
    {
    pathName = dlg.GetPathName();
    pathName.Replace("\\", "\\\\");//路径转换
    }
    else return;//返回
    CCallnfor cf;
    if (cf.DoModal() != IDOK) return;//返回
    CString sDriver = GetExcelDriver(); 
    sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s", sDriver, pathName);
    if (db.Open(NULL, false, false, sDsn))
    {
    int nIndex = 0;
    CRecordset recset(&db);
    //设置读取的查询语句.
                sSql = "SELECT * FROM MT";
                //执行查询语句
                recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
                //获取查询结果
    while (!recset.IsEOF())
    {
    //读取Excel内部数值
    recset.GetFieldValue(nIndex, sItem[0]);
    recset.GetFieldValue(nIndex + 1, sItem[1]);
    recset.GetFieldValue(nIndex + 2, sItem[2]);
    recset.GetFieldValue(nIndex + 3, sItem[3]);
    recset.GetFieldValue(nIndex + 4, sItem[4]);
    recset.GetFieldValue(nIndex + 5, sItem[5]);
    recset.GetFieldValue(nIndex + 6, sItem[6]);
    recset.GetFieldValue(nIndex + 7, sItem[7]);
    recset.GetFieldValue(nIndex + 8, sItem[8]);
    recset.GetFieldValue(nIndex + 9, sItem[9]);
    // 移到下一行
    recset.MoveNext();
    if (db1.Open("HHWL"))//odbc,插入记录到数据库
    {
    Sql = "insert into MTOldData(MTNum, TruckNum, TheDate, Type, High, Width, Long, Number, Heavy, Contract, GoodName) values('"+MTNum+"', '"+sItem[0]+"', '"+sItem[1]+"', '"+sItem[2]+"', '"+sItem[3]+"', '"+sItem[4]+"', '"+sItem[5]+"', '"+sItem[6]+"', '"+sItem[7]+"', '"+sItem[8]+"', '"+sItem[9]+"')";
    db1.ExecuteSQL(Sql);
    db1.Close();
    }
    }
    db.Close();
    }
    }
    catch (CDBException* e)
    {
    e->ReportError();
    e->Delete();
    }
    }