VC、sql sever、EXCEL
我做了一个按钮是要将sql sever 的一个表中数据拷读取到excel中 翻阅了很多资料 网上也搜了 还是不会呀!!! 请各位高人指点一下吧 很是感激的
注:我用的是VC 访问数据库是ADO
[解决办法]
下面的代码中我是把 ClistCtrl 里的数据导到 EXCEL,你换成你的数据库的 RS 就可以了。看代码似乎是把 EXCEL 操作作为一种特殊的数据库操作
-----------------------
if(sExcelFile==_T( " ")||sExcelFile.Find(_T( ".xls "))==0)
return;
// 创建进行存取的字符串
sSql.Format(_T( "DRIVER={%s};DSN= ' ' ' ';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\ "%s\ ";DBQ=%s "),sDriver, sExcelFile, sExcelFile);
// 创建数据库 (既Excel表格文件)
if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
{
// 创建表结构
int i;
LVCOLUMN columnData;
CString columnName;
int columnNum = 0;
CString strH;
CString strV;
sSql = " ";
strH = " ";
columnData.mask = LVCF_TEXT;
columnData.cchTextMax =100;
columnData.pszText = columnName.GetBuffer (100);
for(i=0;pList-> GetColumn(i,&columnData);i++)
{
if (i!=0)
{
sSql = sSql + _T( ", ") ;
strH = strH + _T( ", ") ;
}
sSql = sSql + columnData.pszText +_T( " TEXT ");
strH = strH + columnData.pszText +_T( " ");
columnName.ReleaseBuffer ();
columnNum = i+1;
}
CString sSql2;
sSql2.Format(_T( "CREATE TABLE %s (%s) "),sSheetName,sSql);
TRY
{
database.ExecuteSQL(sSql2);
}
CATCH(CDBException,e){}
END_CATCH;
// 插入数据项
int nItemIndex;
for (nItemIndex=0;nItemIndex <pList-> GetItemCount ();nItemIndex++)
{
strV = " ";
for(i=0;i <columnNum;i++)
{
if (i!=0)
{
CString tmp=_T( " ");
tmp=strV;
strV.Format(_T( "%s, "),tmp);
}
CString str=pList-> GetItemText(nItemIndex,i);
if(str==_T( " "))str=_T( "- ");
CString tmp=_T( " ");
tmp=strV;
strV.Format(_T( "%s '%s ' "),tmp,str);
}
sSql.Format(_T( "INSERT INTO %s (%s) VALUES(%s) "),sSheetName,strH, strV );
database.ExecuteSQL(sSql);
}
}
// 关闭数据库
database.Close();
warningStr.Format(_T( "导出EXCEL文件保存于\n%s! "),sExcelFile);
MessageBox(NULL,warningStr,_T( "提示 "),MB_OK|MB_ICONINFORMATION|MB_TOPMOST);