问问MFC中利用ODBC打开Excel出错的问题!!???

各位大拿好,最近使用odbc对execl操作出现了问题,却一直没有找到解决办法,希望有人能够帮助看看,谢谢各位了。
事情是这样,以前是可以用的,电脑的win10系统升级了后,使用的wps也升级了。没有装微软的execl.
 出现了如下错误:
 ![图片说明](https://img-ask.csdn.net/upload/201710/24/1508833944_486846.png)
非法的连接串属性FIRSTROWHASNAMES

非法的连接串属性CREATE_DB
非法的连接串属性FIRSTROWHASNAMES
非法的连接串属性CREATE_DB
非法的连接串属性FIRSTROWHASNAMES
非法的连接串属性CREATE_DB
非法的连接串属性FIRSTROWHASNAMES
非法的连接串属性CREATE_DB
非法的连接串属性FIRSTROWHASNAMES
部分代码如下:
if (m_bExcel) // If file is an Excel spreadsheet
{
m_Database = new CDatabase;
GetExcelDriver();
m_sDsn.Format(L"DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=%s;DBQ=%s", m_sExcelDriver, m_sFile, m_sFile);
if (Open())
{
if (m_bBackup)
{
if ((m_bBackup) && (m_bAppend))
{
CString tempSheetName = m_sSheetName;
m_sSheetName = L"CSpreadSheetBackup";
m_bAppend = false;
if (!Commit())
{
m_bBackup = false;
}
m_bAppend = true;
m_sSheetName = tempSheetName;
m_dCurrentRow = 1;
}
}
}
}

在执行Open()时出的错,open函数如下:
bool CSpreadSheet::Open()

{
if (m_bExcel) // If file is an Excel spreadsheet
{
BOOL bOK = m_Database->OpenEx(m_sDsn, CDatabase::noOdbcDialog);
// Open Sheet
m_rSheet = new CRecordset( m_Database );
m_sSql.Format(L"SELECT * FROM [%s$A1:IV65536]", m_sSheetName);
try
{
m_rSheet->Open(CRecordset::forwardOnly, m_sSql, CRecordset::readOnly);
}
catch(...)
{
CString csErr = GetLastError();
delete m_rSheet;
m_rSheet = NULL;
m_Database->Close();
return false;
}(部分代码)

应该是模板问题,解析的模板对应不上吧,你可以看下

你指的模板是execl吗,除了系统升级了后,其他地方没有改变过啊。

http://blog.sina.com.cn/s/blog_48479d840100z5rl.html

问题找到了解决的方法了,谢谢大家,微软最新的补丁程序 KB4041691 卸载掉就可以了。控制面板-程序-卸载程序-查看已安装的更新-卸载掉 KB4041691补丁就可以了。

有人在给出临时解决,但E都是封装好没办法修改吧。
https://social.msdn.microsoft.co ... 6-afdc-65341762f753 网上搜到了一些资料,和大家分享一下。

https://social.msdn.microsoft.com/Forums/en-US/2feac7ff-3fbd-4d46-afdc-65341762f753/odbc-excel-driver-stopped-working-with-unexpected-error-from-external-database-driver-1?forum=sqldataaccess

表的中的字段类型看看有没有问题

http://www.educationsoft.cn/down.asp
下载“ODBC读写EXCEL失败修复”