各位大侠:
   我在做毕设时遇到了这样一个问题(如题),我不知道平时我们常见的那个save as是怎么工作的
我在程序中也可以选程序的保存路径,但是确定后,按照指定路径去找,什么都没有
还有大家看看我从listctrl控件中取已经显示的记录,然后将它们写入Excel表有没有错误,还有什么改进意见
先谢谢了,我的代码如下:
   
   bool CReaderDlg::OnMenuSave() 
{
      // TODO: Add your command handler code here
      CFileDialog dlg(false,"","",NULL,"Excel文件(*.xls)|*.xls");//构造标准的windows文件对话框对象
      if(dlg.DoModal()!=IDOK)
      return false;
      AfxGetApp()->BeginWaitCursor();
      CString sExcelFile; 
      sExcelFile = dlg.GetPathName();//在对话框中获得文件的完整路径
      int nPos = sExcelFile.ReverseFind('\\');   //寻找字符\返回索引号
      CString sName = sExcelFile.Right(sExcelFile.GetLength()-nPos-1);    //GetLength()获得控件中的字符数目。获得文件名
      nPos = sName.Find('.');
      sName = sName.Left(nPos);
      CDatabase database;
      CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动    
      CString sSql;      TRY
  {
    // 创建进行存取的字符串
          sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile,           sExcelFile);            // 创建数据库 (即Excel表格文件)
    if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
    {
       // 创建表结构(图书证号、姓名......)
       sSql.Format ("CREATE TABLE %s (CarDId TEXT,Name TEXT,Sex TEXT, Department TEXT,Class TEXT,Rank TEXT,Phone                NUMBER,Address TEXT,Manager TEXT)",sName);
       database.ExecuteSQL(sSql);
       int nLineCount = m_ctrlreader.GetItemCount();
               CString tempArray[9];                //临时数组变量,用来存放每行9个字段的值
       for(int i=0;i<=nLineCount;i++)       //i代表行
{
  for(int j=0;j<9;j++)               //j代表列
             {
 tempArray[j]=m_ctrlreader.GetItemText(i,j);
     }                  
  sSql.Format("insert into %s values('%s','%s','%s','%s','%s','%s',%d,'%s','%s')",sName,tempArray[0],tempArray[1],tempArray[2],tempArray[3],tempArray[4],tempArray[5],tempArray[6],tempArray[7],tempArray[8]);
  database.ExecuteSQL(sSql);
         }
    // 关闭数据库
    database.Close();
     }
 } CATCH_ALL(e)
{
TRACE1("Excel驱动没有安装: %s",sDriver);
//AfxMessageBox(e->m_strError);
}
     END_CATCH_ALL;
     AfxGetApp()->EndWaitCursor();
}