12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- /**
- * Utility class to access OpenDocument spreadsheets read-only
- *
- * Requires PHP 5.2
- *
- * @version $Id: Calc_Reader.php,v 1.4 2007-09-02 20:50:12 marand Exp $
- * @license CeCILL 2.0
- * @copyright 2005-2006 Ouest Systemes Informatiques
- */
- $erCalc_Reader = error_reporting(E_ALL | E_STRICT);
- /**
- * Utility class to access OpenDocument spreadsheets read-only
- */
- class Calc_Reader
- {
- const NS_TABLE = "urn:oasis:names:tc:opendocument:xmlns:table:1.0";
- const NS_OFFICE = "urn:oasis:names:tc:opendocument:xmlns:office:1.0";
- /**
- * @var DOMDocument $xml
- */
- public $xml;
- /**
- * @var DOMXPath $xpath
- */
- public $xpath;
- function __construct($path)
- {
- $this->xml = new DOMDocument();
- $this->xml->preserveWhiteSpace = FALSE;
- $this->xml->load($path);
- $this->xpath = new DOMXPath($this->xml);
- $this->xpath->registerNameSpace('office', Calc_Reader::NS_OFFICE);
- $this->xpath->registerNameSpace('table', Calc_Reader::NS_TABLE);
- }
- /**
- * Return a DOMNodeList of the worksheets available in the document
- *
- * @return DOMNodeList
- */
- function getCalcSheets()
- {
- $sq = '//table:table';
- $list = $this->xpath->query($sq);
- unset($sq);
- return $list;
- }
- /**
- * Return the names of the worksheets available in the document
- *
- * @return array
- */
- function getCalcSheetNames()
- {
- $dnlSheets = $this->getCalcSheets();
- $ret = array();
- foreach ($dnlSheets as $node)
- {
- $ret[] = $node->getAttributeNS(Calc_Reader::NS_TABLE, 'name');
- }
- unset($dnlSheets);
- return $ret;
- }
- /**
- * Return the rows in the spreadsheet as a DOMNodeList
- * WARNING: this means ALL the rows, in all the sheets, not just the first sheet
- *
- * @param string $namedRange Optional name of range, notably Sheet name
- * @return DOMNodeList
- */
- function getRows ($namedRange = NULL)
- {
- $query = empty($namedRange)
- ? '//table:table-row'
- : '//table:table[@table:name="' . $namedRange . '"]/table:table-row';
- $ret = $this->xpath->query($query);
- unset($query);
- return $ret;
- }
- }
- error_reporting($erCalc_Reader);
- unset ($erCalc_Reader);
|