<学习笔记>利用VS2019在MFC中读写excel文件
包含头文件
#include<afxdb.h> //用于建立数据库对象,包括CDatabase类
#include <odbcinst.h>
#pragma comment(lib,"odbc32.lib")
#pragma comment(lib,"odbccp32.lib")
#pragma comment(lib,"legacy_stdio_definitions.lib")
获取excel驱动
通过查询的方式使用excel驱动,具体函数如下,函数填入具体使用的驱动名,每台设备可能会有不一样的驱动库,如果想知道自己的驱动都有什么可以在查询循环中加入MessageBox(str)来查看,在本例中主要会用到“Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, .xlsb)”;和“Microsoft Excel Driver (.xls)”。
CString CMyDialog::GetExcelDriver(char* Drivername)//读取EXCEL文件//检索是否安装有Excel驱动
{
CString sDriver;
TCHAR szDrivers[4096];
memset(szDrivers, 0, sizeof(szDrivers));
WORD wRet = 0;
// 获取已安装驱动的名称(函数在odbcinst.h里)
if (SQLGetInstalledDrivers(szDrivers, _countof(szDrivers), &wRet))
{
LPTSTR pszDrv = szDrivers;
// 检索已安装的驱动是否有Excel
while (*pszDrv)
{
CString str = CString(pszDrv);
CStringA StrA = static_cast<CStringA>(str);
char* str2 = StrA.GetBuffer();
//AfxMessageBox(str);//测试
if (strstr(str2, Drivername) != 0) {
sDriver = CString(str2);
return sDriver;
}
pszDrv += _tcslen(pszDrv) + 1;
}
}
return _T("");
}
打开excel文件并读取内容
获取excel驱动后,打开打开文件窗口,CDatabase类和CRecordSet类配合使用将excel文件信息在ListControl控件(view=report,变量mList1)上显示。
void CMyDialog::OnBnClickedButton1()
{
// 打开文件
CString sDriver = GetExcelDriver(