我需要在DAO下打开EXCEL表格。
用CDaoDatabase 下的Open()函数据说可以完成。(MSDN中说可以)
可是我设不对他的第四个参数,也就是ISAM。什么什么的。
我不知道在第四个参数里写些什么可以让它打开EXCEL的文件。

解决方案 »

  1.   

    m_pSet->Open();直接打开,不用设置参数啊
      

  2.   

    对不起,那是打开access的,excel应该是这样的
    CDatabase database;
        CString sSql;
        CString sItem[7];
    CString sDriver;
        CString sDsn;
        CString sFile,sPath; CDBVariant tempVari;
    //获取主程序所在路径,存在sPath中
    GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
    sPath.ReleaseBuffer ();
        int nPos;
    nPos=sPath.ReverseFind ('\\');
    sPath=sPath.Left (nPos); sFile = sPath + "\\table.xls"; 
    sDriver = GetExcelDriver();
        if (sDriver.IsEmpty())
        {
            // 没有发现Excel驱动
            AfxMessageBox("没有安装Excel驱动!");
            return;
        }
    sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s", sDriver, sFile);
     // 打开数据库(即Excel文件)
    database.Open(NULL, false, false, sDsn);
      

  3.   

    楼上的老兄,先谢过了。
    不过我用的是DAO。不是ODBC。
    此外你的GetExcelDriver();是那里定义的啊,我在msdn中没找到啊。是自己写的吗?
    好痛苦。
      

  4.   

    我在试第四个参数
    出现
    item not found in this collection.
    这是怎么回事啊,是不是要连lib.
    我是自己试着用dao 的,没书。
    请高手指教。
    谢过!
      

  5.   

    对不起啊,自己写的
    CString CEx01bDlg::GetExcelDriver()
    {
        char szBuf[2001];
        WORD cbBufMax = 2000;
        WORD cbBufOut;
        char *pszBuf = szBuf;
        CString sDriver;    // 获取已安装驱动的名称(函数在odbcinst.h里)
        if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
            return "";
        // 检索已安装的驱动是否有Excel...
        do
        {
            if (strstr(pszBuf, "Excel") != 0)
            {
                //发现 !
                sDriver = CString(pszBuf);
                break;
            }
            pszBuf = strchr(pszBuf, '\0') + 1;
        }
        while (pszBuf[1] != '\0');    return sDriver;
    }
    哦是odbc的,不是dao的,好象dao只能是mdb的数据库吧,建议你用access数据库,或用odbc做excel,要excel的代码,我给你发个过去,给个邮箱。
      

  6.   

    //名称:GetExcelDriver
    //功能:获取ODBC中Excel驱动
    CString CRWExcelDlg::GetExcelDriver()
    {
        char szBuf[2001];
        WORD cbBufMax = 2000;
        WORD cbBufOut;
        char *pszBuf = szBuf;
        CString sDriver;    // 获取已安装驱动的名称(涵数在odbcinst.h里)
        if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
            return "";
        
        // 检索已安装的驱动是否有Excel...
        do
        {
            if (strstr(pszBuf, "Excel") != 0)
            {
                //发现 !
                sDriver = CString(pszBuf);
                break;
            }
            pszBuf = strchr(pszBuf, '\0') + 1;
        }
        while (pszBuf[1] != '\0');    return sDriver;
    }
    ///你的Open()第4个函数写成这样试试:
    DRIVER={MICROSOFT EXCEL DRIVER (*.XLS)};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB="c:\\Demo.xls";DBQ=c:\\Demo.xls
      

  7.   

    [email protected]
    真是谢谢大家了。
    感谢!