Из PHP в OpenOffice.Calc: работа с COM-объектами : Работа с данными в ячейках
Материал из Справочник Web-языков.
[править] Запись значения в ячейку
Для записи данных в ячейку существует три метода для объекта Cell, в зависимости от вносимых данных.
- setString
- - запись текстовых данных;
- setValue
- - запись числовых данных;
- setFormula
- - запись формулы;
<?php
$varArr = array();
$oo = new COM("com.sun.star.ServiceManager"); // Создаем новый COM-объект сервис манеджер
$desk = $oo->CreateInstance("com.sun.star.frame.Desktop"); // Создаем новый фрэйм для загрузки документа
$oodoc = $desk->LoadComponentFromURL('private:factory/scalc','_blank',0,$varArr); // запуск приложения
$Sheets = $oodoc->getSheets();
//вносим данные
$Cell=$Sheet->getCellByPosition(0,0); //получаем ссылку на ячейку
$Cell->SetString("Множитель"); //вносим текст
$Cell=$Sheet->getCellByPosition(1,0);
$Cell->SetString("Множитель");
$Cell=$Sheet->getCellByPosition(2,0);
$Cell->SetString("Произведение");
$Cell=$Sheet->getCellByPosition(0,1); //получаем ссылку на ячейку
$Cell->SetValue(78); //вносим число
$Cell=$Sheet->getCellByPosition(1,1);
$Cell->SetValue(11);
$Cell=$Sheet->getCellByPosition(2,1); //получаем ссылку на ячейку
$Cell->SetFormula("=A2*B2"); //вносим формулу
//сохраняемся закрываемся
$mysave = $oo->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$mysave->Name="FilterName";
$mysave->Value="MS Excel 97";
$varArr[0]=$mysave;
$oodoc->storeAsURL("file://localhost/c:/test.xls",$varArr);
$oodoc->close(true);
$oodoc = Null;
$desk->terminate;
$desk = Null;
?>
[править] Чтение значений из ячейки
Для чтения данных из ячейки сначало необходимо узнать какой тип данных в ней находится. Для этого можно воспользоваться методом getType. Возвращаемые значения:
0 - пустая ячейка;
1 - число;
2 - текст;
3 - формула.
В зависимости от полученного результата используются методы getString, getValue, getFormula.
$Cell=$Shhet->getCellByPosition(1,1); $type=$Cell->getType; switch ($a) { case 1: $value_=$Cell->getValue; break; case 2: $value_=$Cell->getString; break; case 3: $value_=$Cell->getFormula; break; default: $value_=''; }