CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动
CString sExcelFile = pThis->strFileName+".xls"; // 要建立的Excel文件
CString sSql;
CString strField = "";
int n = pThis->pGrid->GetColumnCount();
int m = pThis->pGrid->GetRowCount();
int nRowNum = pThis->pGrid->GetRowCount();
int nColumnNum = pThis->pGrid->GetColumnCount();
int nCurRow=1;
int nTableNum=1;
CString strTableName = "";
while (nCurRow<=nRowNum)
{
CDatabase database;
CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动
//CString sExcelFile = strExcFile; // 要建立的Excel文件
CString sSql;
CString strField = "",strField2 = "";
int m;
// 创建进行存取的字符串
sSql.Format("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 =256;
columnData.pszText = columnName.GetBuffer (256);
for(i=0;i<nColumnNum;i++)
{
strField = strField + "[" + pThis->pGrid->GetItemText(0,i) +"]" + " char(255), ";
strField2 = strField2 + "[" + pThis->pGrid->GetItemText(0,i) +"], ";
}
columnName.ReleaseBuffer ();
m = i;
// 创建表结构
strTableName ="";
strTableName.Format("查询结果集_%d",nTableNum++);
sSql.Format("CREATE TABLE [%s] (",strTableName);
//OutputDebugString(sSql);
strField.Delete(strField.GetLength()-2, 2);
strField += ")";
sSql += strField;
//OutputDebugString(sSql);
database.ExecuteSQL(sSql);
strField2.Delete(strField2.GetLength()-2, 2);
// 插入数
CString strTmp="";
for (int nCurExcelCount=0; nCurExcelCount<10000; nCurExcelCount++)
{
pThis->m_proc.SetPos(nCurRow);
sSql="";
sSql.Format("INSERT INTO [%s] (",strTableName);
sSql += strField2;
sSql += ") VALUES (";
for (int j = 0; j <nColumnNum ; j++)
{
CString str = "";
CString strItem = pThis->pGrid->GetItemText(nCurRow,j);
if(strItem.Find('/'')>=0)
{
strItem.Replace('/'','_');
}
str.Format("'%s', ", strItem);
sSql = sSql + str;
}
sSql.Delete(sSql.GetLength()-2, 2);
sSql += ")";
//OutputDebugString(sSql);
database.ExecuteSQL(sSql);
if(++nCurRow>nRowNum)
break;
}
}
// 关闭数据库
database.Close();
}
return 0;