tyliling 发表于 2007-12-11 16:05:00

从CAD里导出数据到excel档的问题.

<p>各位我现在把CAD数据导入到excel档案后为了方便,程式没有自动关掉excel,如果采用手动关掉excel,电脑进程里面的excel.exe无法关掉,如果执行几次就会产生几个excel.exe进程,请高手指教一下.假如要在程式里面关掉excel请问用什么函数.</p>

tyliling 发表于 2008-1-6 23:22:00

<p>可否回复一下呀</p>

easypower 发表于 2008-1-7 11:35:00

你把excel当作一个数据库来做就可以了

easypower 发表于 2008-1-7 11:38:00

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