| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | <?php/** * Utility class to access OpenDocument spreadsheets read-only * * Requires PHP 5.3 * * @license CeCILL 2.0 * @copyright 2005-2012 Ouest Systemes Informatiques */namespace OSInet\Open_Document\Calc;/** * Utility class to access OpenDocument spreadsheets read-only */class 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', self::NS_OFFICE);    $this->xpath->registerNameSpace('table', self::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(self::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;  }}
 |