class PHPExcel_IOFactory in Loft Data Grids 6.2
Same name and namespace in other branches
- 7.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
- class \PHPExcel_IOFactory
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
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PHPExcel_IOFactory:: |
private static | property | * Autoresolve classes * * * @access private * @static | |
PHPExcel_IOFactory:: |
private static | property | * Search locations * * * @access private * @static | |
PHPExcel_IOFactory:: |
public static | function | * Add search location * * @static * @access public * | |
PHPExcel_IOFactory:: |
public static | function | * Create PHPExcel_Reader_IReader * * @static * @access public * | |
PHPExcel_IOFactory:: |
public static | function | * Create PHPExcel_Reader_IReader for file using automatic PHPExcel_Reader_IReader resolution * * @static * @access public * | |
PHPExcel_IOFactory:: |
public static | function | * Create PHPExcel_Writer_IWriter * * @static * @access public * | |
PHPExcel_IOFactory:: |
public static | function | Get search locations | |
PHPExcel_IOFactory:: |
public static | function | * Identify file type using automatic PHPExcel_Reader_IReader resolution * * @static * @access public * | |
PHPExcel_IOFactory:: |
public static | function | * Loads PHPExcel from file using automatic PHPExcel_Reader_IReader resolution * * @static * @access public * | |
PHPExcel_IOFactory:: |
public static | function | * Set search locations * * @static * @access public * | |
PHPExcel_IOFactory:: |
private | function | Private constructor for PHPExcel_IOFactory |