[工程源码实例] C++ ADO 读写Excel源码及注意点

清泛原创
工程源码下载:excel-ado.zip

运行结果截图:


生成的Excel截图:


主要代码片段:
//导入Excel COM支持。。。不过程序编译后即使客户机没有安装Excel软件,也可读写Excel!!!
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")

...

//连接字符串(这里是Excel 2003,   2007的Extended Properties="Excel 12.0 Xml;貌似找不到驱动,有解决的烦请评论告知下)
"Provider='Microsoft.JET.OLEDB.4.0';Data Source=" << filename << ";Extended Properties=\"Excel 8.0;HDR=" << hdr << "\"";

...

//建立连接(通用的ADO方法,读写数据库也是这种写法)
_bstr_t connStr(makeConnStr(excelFile, header).c_str());
                    
TESTHR(pRec.CreateInstance(__uuidof(Recordset)));       
TESTHR(pRec->Open(sqlSelectSheet(connStr, sheetIndex).c_str(), connStr, adOpenStatic, adLockOptimistic, adCmdText));

...

//读单元格,拉游标到下一行
_variant_t v = pRec->Fields->GetItem("列A")->Value;
pRec->MoveNext();

//写单元格,更新单元格,关闭
pRec->Fields->GetItem("列A")->Value = _variant_t(i);
TESTHR(pRec->Update());
TESTHR(pRec->Close());

...
//更多详细请查看工程源码

注意点:
1、程序编译后即使客户机没有安装Excel软件,也可运行读写Excel!!!
2、读写Excel 2003 OK,2007及之后的连接字符串的 Provider='Microsoft.ACE.OLEDB.12.0';Data Source=" << filename << ";Extended Properties=\"Excel 12.0;HDR=" << hdr << "\" 貌似找不到驱动,有解决的烦请评论告知下,谢谢。
3、定位单元格可以用整数索引,也可以用字符串列名(第一行的文字)。
4、SELECT * FROM [中文Sheet名$]   中文Sheet名后要加"$"。
5、单元格为空的话,v.vt 值为 VT_NULL。

C++ ADO 读写Excel

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部