问问MFC中利用ODBC保存数据为Excel的问题!!???

王朝vc·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

CDatabase database;

CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动

CString sSql,sExcelFile;

//弹出对话框选择路径

CFileDialog fileDlg (FALSE, "Path", filename,OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, "*.xls");

if( fileDlg.DoModal()==IDOK)

{

sExcelFile = fileDlg.GetPathName(); // 要建立的Excel文件

CFileFind finder;

BOOL bWorking = finder.FindFile(sExcelFile);//寻找文件

if (bWorking)//如果已经存在文件,则删除

{

CFile::Remove((LPCTSTR)sExcelFile);

}

}

else return;

// 创建进行存取的字符串

sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s", sDriver, sExcelFile, sExcelFile);

// 创建数据库 (既Excel表格文件)

if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )

{

CHeaderCtrl* pHeader = resultlist.GetHeaderCtrl();

//获得行,列的个数

int nColCount = pHeader->GetItemCount();

int nLineCount = resultlist.GetItemCount();

int ColOrderArray[100];

CString ca[100];

resultlist.GetColumnOrderArray(ColOrderArray, nColCount);

//检索各列的信息,确定列标题的内容

for(int i =0 ; i< nColCount; i++)

{

LVCOLUMN lvc;

char text[100];

lvc.mask = LVCF_TEXT|LVCF_SUBITEM;

lvc.pszText = text;

lvc.cchTextMax = 100;

resultlist.GetColumn(ColOrderArray[i], &lvc);

ca[i] = lvc.pszText;

}

// 创建表结构

CString tempsql="(";

for(i =0 ; i< nColCount-1; i++)

{

tempsql+=ca[i];

tempsql+=" TEXT,";

}

tempsql+=ca[nColCount-1];

tempsql+=" TEXT)";

sSql = "CREATE TABLE Sheet1 ";

sSql+=tempsql;

database.ExecuteSQL(sSql);

//插入数据

int item_count=resultlist.GetItemCount();

tempsql="(";

for(i =0 ; i< nColCount-1; i++)

{

tempsql+=ca[i];

tempsql+=" ,";

}

tempsql+=ca[nColCount-1];

tempsql+=")";

for(int itemnum=0;itemnum<item_count;itemnum++){

sSql="";

sSql ="INSERT INTO Sheet1 ";

sSql+=tempsql;

sSql+="VALUES ('";

for(i =0 ; i< nColCount-1; i++)

{

sSql+=resultlist.GetItemText(itemnum, i);

sSql+="','";

}

sSql+=resultlist.GetItemText(itemnum, nColCount-1);

sSql+="')";

database.ExecuteSQL(sSql);

}

}

// 关闭数据库

database.Close();

AfxMessageBox("Excel文件写入成功!");

----------------------------

程序在前面黑体字的地方就出错了!报出的错误是:(一个对话框!)

--------------------------------------------------------------------

不能更新。数据库和对象为只读。

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

驱动程序的SqlSetConnectAttr失败

---------------------------------------------------------------------

我的csdn上看到别人也是这么用的,他们怎么没有出现这个问题啊!?我是MFC新手,希望各位大侠告知啊!!有点急啊!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航