明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3841|回复: 3

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

[复制链接]
发表于 2007-12-11 16:05:00 | 显示全部楼层 |阅读模式

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

 楼主| 发表于 2008-1-6 23:22:00 | 显示全部楼层

可否回复一下呀

发表于 2008-1-7 11:35:00 | 显示全部楼层
你把excel当作一个数据库来做就可以了
发表于 2008-1-7 11:38:00 | 显示全部楼层

给你一段函数看看,该函数是将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;
}

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 17:52 , Processed in 0.170059 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表