Из 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_=''; }