VC6.0和VS2010获取Excel驱动

来源:互联网 发布:当尼采哭泣知乎 编辑:程序博客网 时间:2024/06/07 06:39

SQLGetInstalledDirvers函数 在VC6.0中第一个参数是LPSTR 而在 VS2010中 是LPWSTR 区别在于是否为宽字符 在处理这个问题写法上稍微有一点区别


VC6.0:

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;


VS2010:

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

如果你想要的到更多的功能实现可以参考:http://www.vckbase.com/index.php/wv/494以及http://hi.baidu.com/xiao___q/item/1fd973b6f0a42f71254b0926。它们对Excel的操作做了进一步的类封装,比较完善

0 0
原创粉丝点击