首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

BCB6打开excel失误

2013-01-04 
BCB6打开excel出错下面这段代码读取一个EXCEL,测试的时候,放在Button的Click里没问题。但我放进项目里面执

BCB6打开excel出错
下面这段代码读取一个EXCEL,测试的时候,放在Button的Click里没问题。但我放进项目里面执行的时候,到vExcelApp.OlePropertyGet("workbooks").OleFunction("Open", strSaveDir1.c_bstr() );
这句的时候报错:
---------------------------
Debugger Exception Notification
---------------------------
Project QuarkCallAgent.exe raised exception class EAccessViolation with message 'Access violation at address 00894CE3 in module 'QuarkCallAgent.exe'. Read of address 00000800'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------

 
    AnsiString strSaveDir;

    if(OpenDialog1->Execute())
    {
       strSaveDir = OpenDialog1->FileName;
    }
    else
    {
        return; //点击取消返回
    }
    Variant vExcelApp, Sheet1,WorkBook1,Range;

    vExcelApp = Variant::CreateObject("Excel.Application");
     //打开文件
    WideString  strSaveDir1 = WideString(strSaveDir);
    vExcelApp.OlePropertyGet("workbooks").OleFunction("Open", strSaveDir1.c_bstr() );
    //创建工作薄对象(此时该对象得到的是已打开文件的第一个工作薄)
    WorkBook1 = vExcelApp.OlePropertyGet("ActiveWorkBook");
    //创建工作表对象(此时该对象得到的是已打开文件的第一个工作表)
    Sheet1 = WorkBook1.OlePropertyGet("ActiveSheet");


    int columns = Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Columns").OlePropertyGet("Count"); //列数
    int rows = Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Rows").OlePropertyGet("Count");    //行数
[解决办法]

if (!FileExists(strSaveDir)) return;

vExcelApp.OlePropertyGet("workbooks").OleFunction("Open", WideString(strSaveDir));

热点排行