黄破尼 2017-07-27 03:43 采纳率: 50%
浏览 1054
已采纳

C++builder 创建range对象时ole error 800a03ec

想利用C++ Builder ole操作excel取值读入数据库

已经可以实现单元格取值 可是效率太低

想尝试range操作取区域一行一列的值放入数组提高效率
可是创建range对象时
运行程序总是报错ole error 800a03ec
代码如下 求解决方案

Variant ExcelApp,Workbook1,Sheet1,Range1,Borders1;

   ExcelApp = Variant::CreateObject ("Excel.Application");

   String strex = "E:\\ha.xlsx";
   ExcelApp.PG("workbooks").FN("open",strex.c_str()) ; //打开工作簿

   ExcelApp.PS("Visible", (Variant)true);//Excel可见

   Workbook1 = ExcelApp.PG("ActiveWorkBook");

   Sheet1 = Workbook1.PG("ActiveSheet");

   String strRange = "A1:E17";
   Range1=Sheet1.PG("Range", strRange.c_str());
  • 写回答

1条回答 默认 最新

  • 黄破尼 2017-07-28 09:31
    关注

    多谢妖哥指点迷津 附上妖哥的代码
    Variant excelApp = CreateOleObject("Excel.Application");

    String xlsFile = L"E:\temp\ccrun\123.xls";
    excelApp.OlePropertyGet("Workbooks").OleFunction("open", WideString(xlsFile));

    excelApp.OlePropertySet("Visible", True);

    Variant workbook = excelApp.OlePropertyGet("ActiveWorkBook");
    Variant sheet = workbook.OlePropertyGet("ActiveSheet");

    String rangeText = L"A1:E17";
    Variant range = sheet.OlePropertyGet("Range", WideString(rangeText));

    int rowCount = range.OlePropertyGet("Columns").OlePropertyGet("Count");

    ShowMessage(rowCount);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料