You are here

class PHPExcel_IOFactory in Loft Data Grids 7.2

Same name and namespace in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/IOFactory.php \PHPExcel_IOFactory

PHPExcel_IOFactory

@category PHPExcel @package PHPExcel @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)

Hierarchy

Expanded class hierarchy of PHPExcel_IOFactory

1 string reference to 'PHPExcel_IOFactory'
AutoloaderTest::testAutoloadValidPHPExcelClass in vendor/phpoffice/phpexcel/unitTests/Classes/PHPExcel/AutoloaderTest.php

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/IOFactory.php, line 45

View source
class PHPExcel_IOFactory {

  /**
   * Search locations
   *
   * @var	array
   * @access	private
   * @static
   */
  private static $_searchLocations = array(
    array(
      'type' => 'IWriter',
      'path' => 'PHPExcel/Writer/{0}.php',
      'class' => 'PHPExcel_Writer_{0}',
    ),
    array(
      'type' => 'IReader',
      'path' => 'PHPExcel/Reader/{0}.php',
      'class' => 'PHPExcel_Reader_{0}',
    ),
  );

  /**
   * Autoresolve classes
   *
   * @var	array
   * @access	private
   * @static
   */
  private static $_autoResolveClasses = array(
    'Excel2007',
    'Excel5',
    'Excel2003XML',
    'OOCalc',
    'SYLK',
    'Gnumeric',
    'HTML',
    'CSV',
  );

  /**
   *	Private constructor for PHPExcel_IOFactory
   */
  private function __construct() {
  }

  /**
   * Get search locations
   *
   * @static
   * @access	public
   * @return	array
   */
  public static function getSearchLocations() {
    return self::$_searchLocations;
  }

  //	function getSearchLocations()

  /**
   * Set search locations
   *
   * @static
   * @access	public
   * @param	array $value
   * @throws	PHPExcel_Reader_Exception
   */
  public static function setSearchLocations($value) {
    if (is_array($value)) {
      self::$_searchLocations = $value;
    }
    else {
      throw new PHPExcel_Reader_Exception('Invalid parameter passed.');
    }
  }

  //	function setSearchLocations()

  /**
   * Add search location
   *
   * @static
   * @access	public
   * @param	string $type		Example: IWriter
   * @param	string $location	Example: PHPExcel/Writer/{0}.php
   * @param	string $classname 	Example: PHPExcel_Writer_{0}
   */
  public static function addSearchLocation($type = '', $location = '', $classname = '') {
    self::$_searchLocations[] = array(
      'type' => $type,
      'path' => $location,
      'class' => $classname,
    );
  }

  //	function addSearchLocation()

  /**
   * Create PHPExcel_Writer_IWriter
   *
   * @static
   * @access	public
   * @param	PHPExcel $phpExcel
   * @param	string  $writerType	Example: Excel2007
   * @return	PHPExcel_Writer_IWriter
   * @throws	PHPExcel_Reader_Exception
   */
  public static function createWriter(PHPExcel $phpExcel, $writerType = '') {

    // Search type
    $searchType = 'IWriter';

    // Include class
    foreach (self::$_searchLocations as $searchLocation) {
      if ($searchLocation['type'] == $searchType) {
        $className = str_replace('{0}', $writerType, $searchLocation['class']);
        $instance = new $className($phpExcel);
        if ($instance !== NULL) {
          return $instance;
        }
      }
    }

    // Nothing found...
    throw new PHPExcel_Reader_Exception("No {$searchType} found for type {$writerType}");
  }

  //	function createWriter()

  /**
   * Create PHPExcel_Reader_IReader
   *
   * @static
   * @access	public
   * @param	string $readerType	Example: Excel2007
   * @return	PHPExcel_Reader_IReader
   * @throws	PHPExcel_Reader_Exception
   */
  public static function createReader($readerType = '') {

    // Search type
    $searchType = 'IReader';

    // Include class
    foreach (self::$_searchLocations as $searchLocation) {
      if ($searchLocation['type'] == $searchType) {
        $className = str_replace('{0}', $readerType, $searchLocation['class']);
        $instance = new $className();
        if ($instance !== NULL) {
          return $instance;
        }
      }
    }

    // Nothing found...
    throw new PHPExcel_Reader_Exception("No {$searchType} found for type {$readerType}");
  }

  //	function createReader()

  /**
   * Loads PHPExcel from file using automatic PHPExcel_Reader_IReader resolution
   *
   * @static
   * @access public
   * @param 	string 		$pFilename		The name of the spreadsheet file
   * @return	PHPExcel
   * @throws	PHPExcel_Reader_Exception
   */
  public static function load($pFilename) {
    $reader = self::createReaderForFile($pFilename);
    return $reader
      ->load($pFilename);
  }

  //	function load()

  /**
   * Identify file type using automatic PHPExcel_Reader_IReader resolution
   *
   * @static
   * @access public
   * @param 	string 		$pFilename		The name of the spreadsheet file to identify
   * @return	string
   * @throws	PHPExcel_Reader_Exception
   */
  public static function identify($pFilename) {
    $reader = self::createReaderForFile($pFilename);
    $className = get_class($reader);
    $classType = explode('_', $className);
    unset($reader);
    return array_pop($classType);
  }

  //	function identify()

  /**
   * Create PHPExcel_Reader_IReader for file using automatic PHPExcel_Reader_IReader resolution
   *
   * @static
   * @access	public
   * @param 	string 		$pFilename		The name of the spreadsheet file
   * @return	PHPExcel_Reader_IReader
   * @throws	PHPExcel_Reader_Exception
   */
  public static function createReaderForFile($pFilename) {

    // First, lucky guess by inspecting file extension
    $pathinfo = pathinfo($pFilename);
    $extensionType = NULL;
    if (isset($pathinfo['extension'])) {
      switch (strtolower($pathinfo['extension'])) {
        case 'xlsx':

        //	Excel (OfficeOpenXML) Spreadsheet
        case 'xlsm':

        //	Excel (OfficeOpenXML) Macro Spreadsheet (macros will be discarded)
        case 'xltx':

        //	Excel (OfficeOpenXML) Template
        case 'xltm':

          //	Excel (OfficeOpenXML) Macro Template (macros will be discarded)
          $extensionType = 'Excel2007';
          break;
        case 'xls':

        //	Excel (BIFF) Spreadsheet
        case 'xlt':

          //	Excel (BIFF) Template
          $extensionType = 'Excel5';
          break;
        case 'ods':

        //	Open/Libre Offic Calc
        case 'ots':

          //	Open/Libre Offic Calc Template
          $extensionType = 'OOCalc';
          break;
        case 'slk':
          $extensionType = 'SYLK';
          break;
        case 'xml':

          //	Excel 2003 SpreadSheetML
          $extensionType = 'Excel2003XML';
          break;
        case 'gnumeric':
          $extensionType = 'Gnumeric';
          break;
        case 'htm':
        case 'html':
          $extensionType = 'HTML';
          break;
        case 'csv':

          // Do nothing
          // We must not try to use CSV reader since it loads
          // all files including Excel files etc.
          break;
        default:
          break;
      }
      if ($extensionType !== NULL) {
        $reader = self::createReader($extensionType);

        // Let's see if we are lucky
        if (isset($reader) && $reader
          ->canRead($pFilename)) {
          return $reader;
        }
      }
    }

    // If we reach here then "lucky guess" didn't give any result
    // Try walking through all the options in self::$_autoResolveClasses
    foreach (self::$_autoResolveClasses as $autoResolveClass) {

      //	Ignore our original guess, we know that won't work
      if ($autoResolveClass !== $extensionType) {
        $reader = self::createReader($autoResolveClass);
        if ($reader
          ->canRead($pFilename)) {
          return $reader;
        }
      }
    }
    throw new PHPExcel_Reader_Exception('Unable to identify a reader for this file');
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PHPExcel_IOFactory::$_autoResolveClasses private static property * Autoresolve classes * * * @access private * @static
PHPExcel_IOFactory::$_searchLocations private static property * Search locations * * * @access private * @static
PHPExcel_IOFactory::addSearchLocation public static function * Add search location * * @static * @access public *
PHPExcel_IOFactory::createReader public static function * Create PHPExcel_Reader_IReader * * @static * @access public *
PHPExcel_IOFactory::createReaderForFile public static function * Create PHPExcel_Reader_IReader for file using automatic PHPExcel_Reader_IReader resolution * * @static * @access public *
PHPExcel_IOFactory::createWriter public static function * Create PHPExcel_Writer_IWriter * * @static * @access public *
PHPExcel_IOFactory::getSearchLocations public static function Get search locations
PHPExcel_IOFactory::identify public static function * Identify file type using automatic PHPExcel_Reader_IReader resolution * * @static * @access public *
PHPExcel_IOFactory::load public static function * Loads PHPExcel from file using automatic PHPExcel_Reader_IReader resolution * * @static * @access public *
PHPExcel_IOFactory::setSearchLocations public static function * Set search locations * * @static * @access public *
PHPExcel_IOFactory::__construct private function Private constructor for PHPExcel_IOFactory