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