确定添加了Excel的驱动(控制面板-管理工具-数据源-)
代码如下:
#include <afxwin.h>
#include <string>
#include <cstring>
#include <iostream>
#include <fstream>
#include <afxdb.h>
#include <odbcinst.h>
using namespace std;
#define sourcefilename "E://report.txt"
int main()
{
fstream file1(sourcefilename);
string vName,vPath,line;
CDatabase database;
CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动
CString sExcelFile = "e://demo.xls"; // 要建立的Excel文件
CString sSql,cvName,cvPath;
// 创建进行存取的字符串
sSql.Format("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/"%s/";DBQ=%s",
sDriver, sExcelFile, sExcelFile);
// 创建数据库 (Excel表格文件)
if( database.OpenEx(sSql, CDatabase::noOdbcDialog))
{
// 创建表结构(名称、路径)
sSql = "CREATE TABLE demo (Name TEXT,Path TEXT)";
database.ExecuteSQL(sSql);
}
while (!file1.eof())
{
getline(file1,line);
vName=line.substr(17,30);
vPath=line.substr(54,33);
cvName.Format("%s",vName.c_str());
cvPath.Format ("%s",vPath.c_str());
cout<<"cvName:"<<cvName.GetBuffer()<<" ";
cout<<"cvPath:"<<cvPath.GetBuffer()<<endl;
cout<<"**********"<<endl;
TRY
{
// 插入数值
sSql = "INSERT INTO demo (Name,Path) VALUES ('"+cvName+"','"+cvPath+"')";
database.ExecuteSQL(sSql);
}
CATCH_ALL(e)
{
TRACE1("Excel驱动没有安装: %s",sDriver);
}
END_CATCH_ALL;
} //while结束
// 关闭数据库
database.Close();
return 0;
}
为了能使程序运行,修改一下工程配置: 把"project Setting"的"General"的"no using MFC",改为另外2项中的任一项。
还有个关于string类型和CString类型的问题:http://topic.csdn.net/u/20090718/15/d68a2487-691b-4f30-8557-d466817cd268.html?1837755659