问问MFC中利用ODBC保存数据为Excel的问题!!???

 CDatabase database;
    CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动
    CString sSql,sExcelFile;
    //弹出对话框选择路径
    CFileDialog fileDlg (FALSE, "Path", filename,OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, "*.xls");
  if( fileDlg.DoModal()==IDOK)
    {
    sExcelFile = fileDlg.GetPathName();    // 要建立的Excel文件
        CFileFind finder;
        BOOL bWorking = finder.FindFile(sExcelFile);//寻找文件
 
  if (bWorking)//如果已经存在文件,则删除
        {
            CFile::Remove((LPCTSTR)sExcelFile);
        }
 
     }
     else return;
 
  // 创建进行存取的字符串
       sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/"%s/";DBQ=%s",  sDriver, sExcelFile, sExcelFile);
      // 创建数据库 (既Excel表格文件)
       if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
       {
     CHeaderCtrl* pHeader = resultlist.GetHeaderCtrl();
           //获得行,列的个数
           int nColCount = pHeader->GetItemCount();
           int nLineCount = resultlist.GetItemCount();
           int ColOrderArray[100];
           CString ca[100];
           resultlist.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;
              resultlist.GetColumn(ColOrderArray[i], &lvc);
              ca[i] = lvc.pszText;     
          }
          // 创建表结构
          CString tempsql="(";
          for(i =0 ; i< nColCount-1; i++)
          {
              tempsql+=ca[i];
              tempsql+=" TEXT,";
    
           }
         tempsql+=ca[nColCount-1];
          tempsql+=" TEXT)";
          sSql = "CREATE TABLE Sheet1 ";
          sSql+=tempsql;
          database.ExecuteSQL(sSql);
  
    //插入数据
          int item_count=resultlist.GetItemCount();
          tempsql="(";
          for(i =0 ; i< nColCount-1; i++)
          {
              tempsql+=ca[i];
              tempsql+=" ,";
    
          }
          tempsql+=ca[nColCount-1];
          tempsql+=")";
  
    for(int itemnum=0;itemnum<item_count;itemnum++){   
          sSql="";
          sSql ="INSERT INTO Sheet1 ";
          sSql+=tempsql;
          sSql+="VALUES ('";
          for(i =0 ; i< nColCount-1; i++)
          {
              sSql+=resultlist.GetItemText(itemnum, i);
              sSql+="','";
    
          }
          sSql+=resultlist.GetItemText(itemnum, nColCount-1);
          sSql+="')";
          database.ExecuteSQL(sSql);
      }
   }     
 
   // 关闭数据库
   database.Close();

 AfxMessageBox("Excel文件写入成功!");

----------------------------

程序在前面黑体字的地方就出错了!报出的错误是:(一个对话框!)

--------------------------------------------------------------------

不能更新。数据库和对象为只读。

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB

 驱动程序的SqlSetConnectAttr失败

---------------------------------------------------------------------

我的csdn上看到别人也是这么用的,他们怎么没有出现这个问题啊!?我是MFC新手,希望各位大侠告知啊!!有点急啊!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值