给你一段函数看看,该函数是将CListCtrl控件的数据保存到excel中 //使用ODBC将数据输出到excel数据区 void CGlobalFuns::ExportAsExcel(CListCtrl &listCtrl) { CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动 CString sExcelFile; //弹出对话框选择路径 CFileDialog fileDlg(FALSE,NULL,"BaseErr.xls",OFN_FILEMUSTEXIST| OFN_HIDEREADONLY,"(*.xls)|*.xls|"); if( fileDlg.DoModal() == IDOK) { sExcelFile = fileDlg.GetPathName(); // 要建立的Excel文件 CFileFind finder; BOOL bWorking = finder.FindFile(sExcelFile);//寻找文件 if (bWorking)//如果已经存在文件,则删除 { CFile::Remove((LPCTSTR)sExcelFile); }
} else return; TRY { _ConnectionPtr pConnection; CString sql; // 创建进行存取的字符串 sql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile); if(!CDBOperation::OpenExcelDB(pConnection,sql)) { AfxMessageBox("保存失败!"); return; } CHeaderCtrl* pHeader = listCtrl.GetHeaderCtrl(); //获得行,列的个数 int nColCount = pHeader->GetItemCount(); int nLineCount = listCtrl.GetItemCount(); int ColOrderArray[100]; CString ca[100]; listCtrl.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; listCtrl.GetColumn(ColOrderArray, &lvc); ca = lvc.pszText; } // 创建表结构 CString tempsql="("; for(i = 0 ; i < nColCount-1; i++) { tempsql += "["; tempsql += ca; tempsql += "]"; tempsql += " TEXT,"; } tempsql += "["; tempsql += ca[nColCount-1]; tempsql += "]"; tempsql += " TEXT)"; sql = "CREATE TABLE Sheet1 "; sql += tempsql; if(!CDBOperation::ExecuteSql(pConnection,sql)) { AfxMessageBox("创建表结构失败!"); return; } //插入数据 int item_count=listCtrl.GetItemCount(); tempsql="("; for(i =0 ; i< nColCount-1; i++) { tempsql += "["; tempsql+=ca; tempsql += "]"; tempsql+=" ,"; } tempsql += "["; tempsql+=ca[nColCount-1]; tempsql += "]"; tempsql+=")"; for(int itemnum = 0;itemnum < item_count;itemnum++) { sql = "INSERT INTO Sheet1 "; sql += tempsql; sql += "VALUES ('"; for(i =0 ; i< nColCount-1; i++) { sql += listCtrl.GetItemText(itemnum, i); sql += "','"; } sql += listCtrl.GetItemText(itemnum, nColCount-1); sql += "')"; if(!CDBOperation::ExecuteSql(pConnection,sql)) { AfxMessageBox("保存数据失败!"); return; } } // 关闭数据库 pConnection->Close(); AfxMessageBox("Excel文件写入成功!"); } CATCH_ALL(e) { TRACE1("Excel驱动没有安装: %s",sDriver); } END_CATCH_ALL; }
|