无法设置全局变量

时间:2015-07-17 06:56:04

标签: sahi

我想使用一个函数,我传递的参数应该始终设置为全局。我怎样才能做到这一点?这是我的代码:

function ReadExcelfunction($FileName,$SheetName,$RowNum,$ColNum,$Parameter)
{
    var $excel = _getExcel($FileName,$SheetName);
    var $excelData=$excel.getData();
    var $Parameter=$excelData[$RowNum][$ColNum];
    //_setGlobal($Parameter,$excelData[$RowNum][$ColNum]) -- Commented
}

现在假设我将参数传递为 - File sheet 1 1 Name

我想要的是:带有值的名称存储为全局值

之前我使用_setGlobal($Parameter,$excelData[$RowNum][$ColNum])解决了目的,但此API已被删除,现在我需要更改我的脚本。

我正在使用类似于JavaScript的sahi脚本语言。

2 个答案:

答案 0 :(得分:0)

一个可能的解决方案是在运行中从sahi脚本中将值写入现有的Excel工作表单元格,然后从另一个sahi脚本中的excel表单的相应单元格中检索相同的值。

我使用简单的文本文件做了类似的事情 第一个文件

\\ script 1
var $str = "Hello World";
var$filePath = "C:\\temp\\mystring.txt";
_writeToFile($str, $filePath);

第二档

\\ script 2
var $filePath = "C:\\temp\\mystring.txt"; 
var $mystr = _readFile($filePath);

修改:扩展答案

--------------------------------
| VariableName | VariableValue |
--------------------------------
|    MyVar1    |  MyVar1Value  |
--------------------------------
|    MyVar2    |  MyVar2Value  |
--------------------------------
|    MyVar3    |  MyVar3Value  |
--------------------------------

创建一个Sahi函数来创建一个新的Excel工作表:

function _createExcelFile($fileName, $sheetName){
  if($sheetName == null || $sheetName == ""){
    $sheetName = "Sheet1";
  }
  _debug("Excel File Name :: " + $fileName);
  _debug("Excel File Sheet Name :: " + $sheetName);
  var $excelPoi = new Packages.net.sf.sahi.util.ExcelPOI($fileName, $sheetName);
  $excelPoi.createNew();
}

此外,您可以参考Sahi Pro的_getExcel($filePath[, $sheetName]) API。您需要进行一些迭代才能完成任务。您可以根据需要读取和写入数据。

注意:我只在最新版本的Sahi Pro中试过这个,即6.1.0。

答案 1 :(得分:0)

您不需要使用_setGlobal,您只需要在函数声明之前声明一个var。例如,您可以声明一个新数组,然后像_setGlobal一样设置/获取值。



// www.google.com used as start URL
var $globalVariable = new Array();

function SetGlobalVariable(key, newValue) {
  $globalVariable[key] = newValue;
}

SetGlobalVariable('inputValue', 'stack overflow');
_setValue(_textbox("q"), $globalVariable['inputValue']);