ADO 方式访问 Excel 文件的问题
来源:互联网 发布:js中gbk编码转换utf8 编辑:程序博客网 时间:2024/06/05 16:04
最近需要利用 ADO 的方式访问 Excel,其间遇到的问题很多,且把问题和解决方法列在这里。
1 发现在连接时报 Provider cannot be found 错误
结果采用 x64 进行编译可以正确执行,才领悟到原来没有安装 32 位的相关驱动啊。
2 import msado15.dll 的位置问题
X64 平台下分成32位和64位两个版本。
64位:
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace \ rename("EOF", "adoEOF") rename("BOF", "adoBOF")
32位:
#import "C:\Program Files (x86)\Common Files\System\ADO\msado15.dll" no_namespace \ rename("EOF", "adoEOF") rename("BOF", "adoBOF")
3 XLS 和 XLSX 新旧版本文件需要不同的连接字符串
XLS 对应的连接字符串:
connStr.Format("Provider='Microsoft.JET.OLEDB.4.0';Data Source=%s;Extended Properties=\"Excel 8.0;HDR=%s\"", filename, hdr);
XLS 对应的连接字符串则为:
connStr.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Extended Properties=\"Excel 12.0 Xml;HDR=%s\"", filename, hdr);
4 X64 模式的情况下,读取某条纪录的某列时需要传递LONG参数
最开始的代码:
CString str;str.Format("%d", pRec->Fields->GetCount());MessageBox(NULL, str, "Info", MB_OK);for (int j=0; j<pRec->Fields->GetCount(); ++j){_variant_t v = pRec->Fields->GetItem(j)->Value;MessageBox(NULL, (char*)(_bstr_t)v.bstrVal, "Info", MB_OK);}
结果列数正常,但就是报找不到列的错误,很是无奈。折腾了很久,知道后来改成如下的代码才通过。
for(long i = 0; i < pRec->Fields->GetCount(); ++i){_variant_t v = pRec->Fields->GetItem(i)->Value;}
_variant_t vv = pRec->Fields->GetItem(1L)->Value;
- ADO 方式访问 Excel 文件的问题
- 关于以ODBC和ADO方式访问excel数据库总结
- 关于以ODBC和ADO方式访问excel数据库总结
- ADO访问excel
- ADO访问Excel 2007
- ADO访问Excel 2007
- ADO访问Excel 2007
- .net 中访问 excel文件的两种方式
- VB中使用ADO的方法创建及访问Excel文件(原创)
- VB中使用ADO的方法创建及访问Excel文件
- ADO.NET访问数据库的方式
- excel ado 方式
- ADO.NET_01_访问方式
- 使用ADO的方法操作EXCEL文件
- ADO.NET方式读取Excel 不完整问题
- ADO.NET方式读取Excel 不完整问题
- 网页导出excel文件无访问权限的问题
- 访问文件的方式
- 图的应用--二部图的判定及利用匈牙利算法求二部图的最大匹配
- 直方圖均衡化
- 霍夫變換
- arm7 力天电子lpc2148 PLL实验(二)之 PLL重新设定实验参考程序
- 注册表详细讲解
- ADO 方式访问 Excel 文件的问题
- DKMS简介
- 36.飞行音乐
- OnFileOpen与OnOpenDocument
- 将密码框(lineEdit)格式设置为小黑点
- 国庆放假,买票回家,我们一起来看看12306的那些事儿
- IMAGEJ中幾種自動閾值的比較
- 装了金山毒霸又如何?Office文档中毒也没折
- Hibernate的基础配置