Перейти к содержимому

Подготовка к сертификации ISTQB FL
онлайн, начало 10 августа
Тестирование REST API
онлайн, начало 10 августа
Программирование на Python для тестировщиков
онлайн, начало 14 августа
Тестирование без требований
онлайн, начало 17 августа

Paulitto

Регистрация: 14 апр 2009
Offline Активность: 22 окт 2012 06:36
-----

#77775 Полезные процедуры и функции

Написано Paulitto 04 сентября 2010 - 15:01

Для TestComplete есть много готовых примеров работы с excel, но когда мне понадобилось нечто подобное для таблиц OpenOffice, оказалось сложно что либо найти.

Вот пример функции как записать данные в таблицу OpenOffice (JScript):

/*******************************************************************
Arr - массив массивов                                              *
Filename - полный путь к файлу, если такого нет, то он создается   *
********************************************************************/

function SaveArrayToCalc(Arr, FileName)
{
 try
 { 
  //создаем обьект Desktop через который и происходит работа с OpemOffice 
  var oServiceManager = Sys.OleObject("com.sun.star.ServiceManager");
  var oDesktop        = oServiceManager.createInstance("com.sun.star.frame.Desktop");
  
  // добавляем hidden == true в массив параметров открытия документа (чтоб OpenOffice документ не был виден на экране) 
  var VariantArray    = new Array();
  var Mystruct =  oServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
  Mystruct.Name = "Hidden";
  Mystruct.Value = true;
  VariantArray[0] = Mystruct;
  
  //создаем документ, (чтобы открыть уже существующий документ, в кач первого параметра необходимо передать путь к нему в виде url)  
  var oDoc            = oDesktop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, VariantArray);
  //получаем первый лист таблицы
  var oSheet          = oDoc["getSheets"]().getByIndex(0); 
	
  //заполняем первый лист массивом массивов
  for (var j=0; j<Arr.length; j++)
  for(var i=0; i<Arr[j].length; i++)
     oSheet.getCellByPosition(i, j).setString(Arr[j][i]);
  
 //сохраняем документ, путь также в виде url
  oDoc.storeAsURL("file:///"+aqString.Replace(FileName, "\\", "/"), VariantArray);
 //закрытие документа 
  oDoc.Close(false);
 }
 catch(exception)
  {
    Log.Warning("Unable to save the data to ods table", exception.description);
  }

}
Массив массивов вместо двумерного выбрал потому что может иметь разную длину строк, хотя это уже можно поменять как кому нравится.

Читать данные с таблицы можно аналогичным образом передавая в функции LoadComponentFromURL путь к документу в url формате и используя getString вместо setString.
  • 1


Яндекс.Метрика
Реклама на портале