【问题标题】:OpenOffice Automation Delphi how use a callfunctionOpenOffice Automation Delphi 如何使用调用函数
【发布时间】:2010-10-14 14:08:05
【问题描述】:

请帮我解决以下问题: 我想使用 OOoTools.pas 确定开放办公室计算列中的最大值 界面。 我来的时候就这样:

Procedure FindMaximum(oMySheet : Variant);
Var
            oFuncService : Variant;
Begin
  oFuncService := CreateUnoService('com.sun.star.sheet.FunctionAccess');
  ShowMessage(oFuncService.callFunction('MAX', VarArrayOf([10,20,50])));
End;

这行得通

当然我想填写如下列的值:

ShowMessage(oFuncService.callFunction('MAX', VarArrayOf([oMySheet.getCellRangeByName('K8:K10')])));

我收到消息“com.star.lang.IllegalArgumentException:。”为什么? 谢谢

【问题讨论】:

    标签: delphi automation openoffice-calc


    【解决方案1】:

    我又来了。

    callFunction 方法给出了这个错误还是getCellRangeByName 方法?

    procedure FindMaximum(oMySheet : Variant);
    var
      oFuncService : Variant;
      oCellRange: Variant;
      oResult: Variant;
    begin
      oFuncService := CreateUnoService('com.sun.star.sheet.FunctionAccess');
    
      //error here?
      oCellRange := oMySheet.getCellRangeByName('K8:K10');
    
      //or error here?
      oResult := oFuncService.callFunction('MAX', VarArrayOf([oCellRange]));
    
      ShowMessage(oResult);
    end;
    

    我不得不说我觉得documentation有点不清楚。

    当您在上面的示例中遇到 callFunction 方法错误时,试试这个:

    //CellRange not wrapped in a VariantArray
    oResult := oFuncService.callFunction('MAX', oCellRange);
    

    【讨论】:

    • oResult 出现错误 := oFuncService.callFunction('MAX', VarArrayOf([oCellRange]));
    • @addelichtman:您的 K8:K10 范围内是否可能存在无效值?文本而不是数值?
    • 绝对舒尔列只包含整数。是否行 oMySheet.getCellRangeByName('K8:K70');返回列的内容?
    • @addelichtman:可能是自动化桥中的一个错误。当我在 Calc 的宏编辑器中执行相同操作时,它可以工作。但是当我在德尔福尝试这个时,它只是拒绝工作。即使我使用 ValueObjects (Bridge_GetValueObject) 来指定确切的类型,我也会得到错误。
    • 非常感谢您抽出宝贵时间我将通过迭代单元格值来完成该功能(我预计会慢得多)问候Addelichtman
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多