MFC如何获取Excel2007驱动程序,以防止65536行的限制

MFC如何获取Excel2007驱动程序,以防止65536行的限制,excel,mfc,odbc,excel-2007,Excel,Mfc,Odbc,Excel 2007,使用MFC将数据插入excel 2003,我发现限制为65536行 我不想创建另一张表来保存数据,所以我想使用excel 2007 哪个扩展名是.xlsx 我使用以下代码获取驱动程序 ((CDR12Dlg*)AfxGetMainWnd())->sExcelDriver = _T("MICROSOFT EXCEL DRIVER (*.xls)"); ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strExcelFilePath.Format

使用MFC将数据插入excel 2003,我发现限制为65536行

我不想创建另一张表来保存数据,所以我想使用excel 2007

哪个扩展名是.xlsx

我使用以下代码获取驱动程序

((CDR12Dlg*)AfxGetMainWnd())->sExcelDriver = _T("MICROSOFT EXCEL DRIVER (*.xls)");

((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strExcelFilePath.Format(((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strBaseFolder);
    ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strExcelFilePath.AppendFormat(_T("%s_%s_%.0f℃_%d%s"),
                                                                                ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strDevID,
                                                                                ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strDevModel,
                                                                                theApp.fTab1TestAvgTemp,
                                                                                loop,
                                                                                _T(".xls"));

TRY
{
    // Build the creation string for access without DSN
    strSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/%s/;DBQ=%s"),
        ((CDR12Dlg*)AfxGetMainWnd())->sExcelDriver, 
        ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strExcelFilePath, 
        ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strExcelFilePath);

        // Create the database (i.e. Excel sheet)
        if( ((CDR12Dlg*)AfxGetMainWnd())->database.OpenEx(strSql,CDatabase::noOdbcDialog) )
        {
            ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strExcelTableName.Empty();
            ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strExcelTableName.Format(_T("%s_%s"), 
                                                        ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strDevID, 
                                                        ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strDevModel);

            CString strSqlField;
            strSqlField.Format(_T("RecvTime TEXT,"));
            for(int loop=1; loop<=theApp.nTab1TestPointNumber; loop++)
            {
                if(loop == theApp.nTab1TestPointNumber)
                {
                    strSqlField.AppendFormat(_T("TestPoint%d NUMBER"), loop);
                } else {
                    strSqlField.AppendFormat(_T("TestPoint%d NUMBER,"), loop);
                }
            }
            // Create table structure
            strSql.Format(_T("CREATE TABLE \"%s\" (%s)"), 
                ((CDR12Dlg*)AfxGetMainWnd())->sTab1CurveFile.strExcelTableName,
                strSqlField);

            ((CDR12Dlg*)AfxGetMainWnd())->database.ExecuteSQL(strSql);

            }     

            // Close database
            ((CDR12Dlg*)AfxGetMainWnd())->database.Close();
        }
        CATCH_ALL(e)
        {
            TRACE1("Driver not installed: %s\n",((CDR12Dlg*)AfxGetMainWnd())->sExcelDriver);
        }
        END_CATCH_ALL;
替换

sExcelDriver = _T("MICROSOFT EXCEL DRIVER (*.xlsx)");

并另存为.xlsx文件

但结果将显示“未安装驱动程序”

我尝试安装AccessDatabaseEngine,它链接excel 2007


如何将代码更改为acces excel 2007文件。

好的,我找到了解决方案

在windows7控制面板->系统菜单工具->数据源(ODBC)中

选择选项卡的“用户数据源名称”

在代码中查找Excel文件字段和sExcelDriver字符串

必须匹配驱动程序字符串,包括空格和长度

如下代码

sExcelDriver = _T("MICROSOFT EXCEL DRIVER (*.xls, *.xlsx, *.xlsm, *.xlsb)");
sExcelDriver = _T("MICROSOFT EXCEL DRIVER (*.xls, xlsx)");
sExcelDriver = _T("MICROSOFT EXCEL DRIVER (*.xls, *.xlsx, *.xlsm, *.xlsb)");