我想用MFC程序把数据库中数据写到Excel文件里
这期间用到SQLGetInstalledDrivers函数获得ODBC里面的驱动
不过怎么老是就一个SQL Server这么一个驱动被找到!
我确实在ODBC里面添加的有其它驱动 例如:Excel驱动
不过就是用SQLGetInstalledDrivers找不到
代码类似这个....
CString sDriver;//save excel Driver
char szBuf[2000];
WORD cbBufMax=2001;
WORD cbBufOut;
char *pszBuf=szBuf;
if(!SQLGetInstalledDrivers(LPWSTR(szBuf),cbBufMax,&cbBufOut))
return;
do
{
if(strstr(pszBuf,"Excel")!=0)
{
sDriver=CString(pszBuf);
break;
}
pszBuf=strchr(pszBuf,'\0')+1;
}
while(pszBuf[1]!='\0');
if(sDriver.IsEmpty())
{
MessageBox(_T("No Excel Driver! Plase Install!"));
return;
}

解决方案 »

  1.   

    if(!SQLGetInstalledDrivers(LPWSTR(szBuf),cbBufMax,&cbBufOut))如果我把这句的LPWSTR删掉,又提示:Error 1 error C2664: 'SQLGetInstalledDriversW' : cannot convert parameter 1 from 'char [2001]' to 'LPWSTR'
      

  2.   

    第二个问题改好了还有第一个问题。只提示有SQL Server
      

  3.   


    CString GetExcelDriver()
    {
        wchar_t szBuf[2001];
    wchar_t excl[] = L"Excel";
        WORD cbBufMax = 2000;
        WORD cbBufOut;
        wchar_t *pszBuf = szBuf;
        CString sDriver;
        // 获取已安装驱动的名称(函数在odbcinst.h里)
        if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
            return L"";
        // 检索已安装的驱动是否有Excel...
    // AfxMessageBox(CString(pszBuf));
        do
        {
            if(wcsstr(pszBuf, excl) != 0)
            {
                //发现 !
                sDriver = CString(pszBuf);
                break;
            }
    wchar_t ze = {'\0'};
            pszBuf = wcschr(pszBuf, ze) + 1;
        }
        while (pszBuf[1] != '\0');

        return sDriver;
    }我用的vs2008
      

  4.   

    我的怎么还不可以呀,复制的cezhixu的代码。我的是32位机,XP系统,VC 6.0,office2007.哪个有影响啊?denglxk的代码我也试过了。望大侠不吝赐教!是否和ANSI和UniCode有关?
      

  5.   

    还是有错误:没有找到excel驱动,是不是VC6.0和office2007有冲突所致??????