You are on page 1of 21

Documentacin de usuario PHPExcel Lectura de archivos de hoja de clculo

Contenido
Documentacin del usuario PHPExcel lectura de archivos de hoja de clculo 1. Formatos de archivo de hoja de clculo 2. Carga un archivo de hoja de clculo 3. Crear un lector y cargar un archivo de hoja de clculo 4. Opciones de lector de hoja de clculo 4.1. Leer slo los datos desde un archivo de hoja de clculo 4.2. Lectura llamado solamente las hojas de clculo de un archivo 4.3. Lectura especfico slo columnas y filas de un archivo (filtros de lectura) 4.4. Combina varios archivos en un nico objeto PHPExcel 4.5. Filtros leer combinando con el setSheetIndex() mtodo para dividir un archivo CSV grande a travs de mltiples hojas de trabajo 4.6. Pipa o ficha valor archivos separados 4.7. Unas breves palabras sobre la carpeta del valor avanzado 5. Manejo de errores 6. Mtodos auxiliares

1. Formatos de archivo de hoja de clculo


PHPExcel puede leer un nmero de formatos de archivo de hoja de clculo diferentes, aunque no todas las funciones son compatibles con todos los lectores. Revise el documento de referencia cruzada de funcionalidad (funcionalidad cruzada-Reference.xls) para obtener una lista que identifica las funciones son compatibles con que los lectores. En la actualidad, PHPExcel admite los siguientes tipos de archivo para lectura:

Excel5
Formato de archivo binario de la Microsoft Excel (BIFF5 y BIFF8) es un formato de archivo binario que fue usado por Microsoft Excel entre versiones 95 y 2003. El formato es compatible (en diferentes grados) por mayora de los programas de hoja de clculo. BIFF archivos normalmente tienen una extensin de XLS. Documentacin que describe el formato puede encontrarse en lnea en http://msdn.microsoft.com/en-us/library/cc313154 (v=office.12).aspx o de http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355C7B2C1D997DB/ [MS-XLS] .pdf (como un PDF descargable).

Excel2003XML
Microsoft Excel 2003 incluye opciones para un formato de archivo llamado SpreadsheetML. Este archivo es un documento XML con cremallera. No es muy comn, pero sus caractersticas fundamentales son compatibles. Documentacin para el formato puede encontrarse en http://msdn.microsoft.com/enus/library/aa140066%28office.10%29.aspx , aunque por desgracia es bastante escaso en sus detalles.

Excel2007
Microsoft Excel 2007 enva con un nuevo formato de archivo , es decir Microsoft Office Open XML SpreadsheetML, y Excel 2010 ampli esta an ms con sus nuevas caractersticas tales como sparklines. Normalmente, estos archivos tienen la extensin de .xlsx. Este formato se basa en una coleccin con cremallera de eXtensible Markup Language (XML) archivos. Microsoft Office Open XML SpreadsheetML mayormente est estandarizada en ECMA 376 (http://www.ecmainternational.org/news/TC45_current_work/TC45_available_docs.htm) e ISO 29500.

OOCalc
tambin conocido como Open Document Format (ODF) o OASIS, este es el formato de archivo XML de OpenOffice.org para hojas de clculo. Se compone de un archivo zip que incluye varios componentes que son archivos de texto, la mayora de ellas con marcado en el lenguaje de marcado eXtensible (XML). Es el formato de archivo estndar para OpenOffice.org Calc y StarCalc y archivos suelen tienen una extensin de .ods. La especificacin publicada para el formato de archivo est disponible desde la pgina web OASIS Open Office XML formato Comit Tcnico (http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office#technical). Otra informacin est disponible en la pgina web de OpenOffice.org XML File Format (http://xml.openoffice.org/general.html), parte del proyecto OpenOffice.org.

SYLK
Este es el formato de archivo de Microsoft Multiplan simblico Link Interchange (SYLK). Multiplan fue el predecesor de Microsoft Excel . Normalmente, los archivos tienen una extensin de .slk. Aunque no es comn, que todava hay algunas aplicaciones que generan archivos SYLK como opcin multiplataforma, porque (a pesar de estar limitado a una sola hoja de clculo) es un formato simple de implementar y es compatible con algunos datos bsicos y formato de celda opciones (a diferencia de archivos CSV).

Gnumeric
El formato de archivo de Gnumeric es utilizado por la aplicacin de la hoja de clculo Gnumeric Gnome, y normalmente los archivos tienen una extensin de .gnumeric. El contenido del archivo se almacena utilizando eXtensible markup Markup Language (XML), y el archivo se comprime utilizando la biblioteca de compresin gzip del proyecto GNU. http://projects.gnome.org/Gnumeric/doc/File-FormatGnumeric.shtml

CSV
Formato de archivo de valores separados (CSV) coma es una estrategia comn de estructuracin para archivos de formato de texto. En las moscas CSV, cada lnea del archivo representa una fila de datos y (dentro de cada lnea del archivo) los datos diferentes campos (o columnas) estn separadas entre s mediante una coma (","). Si un campo de datos contiene una coma, entonces se debe adjuntar (tpicamente entre comillas (''). A veces las lengetas "\t" o el smbolo de la pipa ("|") se utilizan como separadores en lugar de una coma. CSV es un formato de slo texto, no apoya ningn dato opciones de formato.

2. Carga un archivo de hoja de clculo


La forma ms sencilla para cargar un archivo de libro es permitirle fbrica IO de PHPExcel identificar el tipo de archivo y cargarlo, llamando al mtodo load() esttico de la clase PHPExcel_IOFactory. $inputFileName = './sampleData/example1.xls'; /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

Consulte Examples/Reader/exampleReader01.php para obtener un ejemplo de este cdigo de trabajo.

El mtodo load() tratar de identificar el tipo de archivo y crear instancias de un cargador para ese tipo de archivo; usando para cargar el archivo y guardar los datos y cualquier formato en un objeto PHPExcel. El mtodo hace una suposicin inicial en el cargador para crear una instancia basada en la extensin de archivo; Pero pondr a prueba el archivo antes de ejecutar efectivamente la carga: as que si (por ejemplo) el archivo es en realidad un archivo CSV que se ha dado una extensin .xls (una prctica comn), rechazar el loader Excel5 que normalmente utilizara para un archivo .xls; Pruebe el archivo usando los otros cargadores hasta que encuentra el cargador apropiado y entonces usar eso para leer el archivo. Mientras que es fcil de implementar en su cdigo, y no tienes que preocuparte por el tipo de archivo; Este no es el mtodo ms eficiente para cargar un archivo; y carece de la flexibilidad para configurar el loader en modo alguno antes de realmente leer el archivo en un objeto PHPExcel.

3. Crear un lector y cargar un archivo de hoja de clculo


Si sabes el tipo de archivo del archivo de hoja de clculo que deber cargar, puede instanciar un nuevo objeto lector para ese tipo de archivo, y utilizar el mtodo load() del lector de leer el archivo a un objeto PHPExcel. Es posible crear instancias de los objetos del lector para cada uno de los diferente filetype apoyado por su nombre. Sin embargo, puede obtener resultados imprevisibles si el archivo no es del tipo adecuado (por ejemplo es un CSV con una extensin de XLS), aunque este tipo de excepcin normalmente debe ser atrapado. $inputFileName = './sampleData/example1.xls'; /** Create a new Excel5 Reader **/ $objReader = new PHPExcel_Reader_Excel5(); // $objReader = new PHPExcel_Reader_Excel2007(); // $objReader = new PHPExcel_Reader_Excel2003XML(); // $objReader = new PHPExcel_Reader_OOCalc(); // $objReader = new PHPExcel_Reader_SYLK(); // $objReader = new PHPExcel_Reader_Gnumeric(); // $objReader = new PHPExcel_Reader_CSV(); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName);
Consulte Examples/Reader/exampleReader02.php para obtener un ejemplo de este cdigo de trabajo.

Alternativamente, puede utilizar mtodo createReader() de la fbrica de IO para crear una instancia del objeto lector para ti, simplemente diciendo el tipo de archivo del lector que quieres crear instancias. $inputFileType = 'Excel5'; // $inputFileType = 'Excel2007'; // $inputFileType = 'Excel2003XML'; // $inputFileType = 'OOCalc'; // $inputFileType = 'SYLK'; // $inputFileType = 'Gnumeric'; // $inputFileType = 'CSV'; $inputFileName = './sampleData/example1.xls'; /** Create a new Reader of the type defined in $inputFileType $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName); **/

Consulte Examples/Reader/exampleReader03.php para obtener un ejemplo de este cdigo de trabajo.

Si usted es incierto del tipo de archivo, puede utilizar mtodo identify() de la fbrica de IO para identificar al lector que usted necesita, antes de utilizar el mtodo createReader() para crear una instancia del objeto lector. $inputFileName = './sampleData/example1.xls'; /** Identify the type of $inputFileName **/ $inputFileType = PHPExcel_IOFactory::identify($inputFileName); /** Create a new Reader of the type that has been identified **/

$objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName);

Consulte Examples/Reader/exampleReader04.php para obtener un ejemplo de este cdigo de trabajo.

4. Opciones de lector de hoja de clculo


Una vez que haya creado un objeto de lector para el libro que desea cargar, tienes la oportunidad de establecer opciones adicionales antes de ejecutar el mtodo load().

4.1. Leer slo los datos desde un archivo de hoja de clculo


Si slo est interesado en los valores de celda en un libro, pero no necesito nada de la informacin de formato de celdas, entonces puede configurar el lector para leer slo los valores de datos y cualquier frmulas de cada celda utilizando el mtodo setReadDataOnly(). $inputFileType = 'Excel5'; $inputFileName = './sampleData/example1.xls'; /** Create a new Reader of the type defined in $inputFileType **/ $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Advise the Reader that we only want to load cell data **/ $objReader->setReadDataOnly(true); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName);

Consulte Examples/Reader/exampleReader05.php para obtener un ejemplo de este cdigo de trabajo.

Es importante sealar que los libros (y PHPExcel) almacenan fechas y horas como valores numricos simples: slo pueden ser distinguidos de otros valores numricos por la mscara de formato que se aplica a la celda. Cuando ajuste leer datos slo en true, PHPExcel no lea las mscaras de formato de celdas, as que no es posible diferenciar entre fechas y nmeros. El cargador Gnumeric ha sido escrito para leer las mscaras de formato para valores de fecha incluso cuando lee datos slo se ha establecido en true, as que puede distinguir entre fechas y nmeros; Pero este cambio todava no ha sido implementado para los otros lectores. Lectura de datos slo de un archivo de hoja de clculo se aplica a los lectores: Excel2007 Excel2003XML Excel5 S S OOCalc no S SYLK Gnumeric S CSV NO

4.2. Lectura llamado solamente las hojas de clculo de un archivo


Si el libro contiene una serie de hojas de clculo, pero slo ests interesado en la lectura de algunas de las personas, entonces puede utilizar el mtodo setLoadSheetsOnly() para identificar esas sbanas usted est interesado en la lectura. Para leer una sola hoja, puede pasar ese nombre de hoja como parmetro al mtodo setLoadSheetsOnly(). $inputFileType = 'Excel5'; $inputFileName = './sampleData/example1.xls'; $sheetname = 'Data Sheet #2'; /** Create a new Reader of the type defined in $inputFileType **/ $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Advise the Reader of which WorkSheets we want to load **/ $objReader->setLoadSheetsOnly($sheetname); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName);

Consulte Examples/Reader/exampleReader07.php para obtener un ejemplo de este cdigo de trabajo.

Si quieres leer ms que una sola hoja, puede pasar una lista de nombres de hoja como un parmetro de matriz con el mtodo setLoadSheetsOnly(). $inputFileType = 'Excel5'; $inputFileName = './sampleData/example1.xls'; $sheetnames = array('Data Sheet #1','Data Sheet #3'); /** Create a new Reader of the type defined in $inputFileType **/ $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Advise the Reader of which WorkSheets we want to load **/ $objReader->setLoadSheetsOnly($sheetnames); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName);
Consulte Examples/Reader/exampleReader08.php para obtener un ejemplo de este cdigo de trabajo.

Para restablecer esta opcin por defecto, puede llamar al mtodo setLoadAllSheets(). $inputFileType = 'Excel5'; $inputFileName = './sampleData/example1.xls'; /** Create a new Reader of the type defined in $inputFileType $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Advise the Reader to load all Worksheets **/ $objReader->setLoadAllSheets(); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName); **/

Consulte Examples/Reader/exampleReader06.php para obtener un ejemplo de este cdigo de trabajo.

Hojas de lectura slo llamado trabajo de un archivo se aplica a los lectores: Excel2007 Excel2003XML Excel5 S S OOCalc no S SYLK Gnumeric S CSV NO

4.3. Leyendo slo especficas columnas y filas de un archivo (filtros de lectura)


Si slo ests interesado en leer parte de una hoja de clculo, entonces puede escribir una clase de filtro que identifica las clulas individuales deben ser ledas por el cargador o no. Un filtro de lectura debe implementar la interfaz PHPExcel_Reader_IReadFilter, contiene un mtodo readCell() que acepta argumentos de $columna, $row y $worksheetName y devuelva un booleano verdadero o falso que indica si una clula libro identificada por esas discusiones debe ser leda o no. $inputFileType = 'Excel5'; $inputFileName = './sampleData/example1.xls'; $sheetname = 'Data Sheet #3'; /** Define a Read Filter class implementing PHPExcel_Reader_IReadFilt er */ class MyReadFilter implements PHPExcel_Reader_IReadFilter { public function readCell($column, $row, $worksheetName = '') { // Read rows 1 to 7 and columns A to E only if ($row >= 1 && $row <= 7) { if (in_array($column,range('A','E'))) { return true; } } return false; } } /** Create an Instance of our Read Filter $filterSubset = new MyReadFilter(); **/ **/

/** Create a new Reader of the type defined in $inputFileType $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Tell the Reader that we want to use the Read Filter **/ $objReader->setReadFilter($filterSubset); /** Load only the rows and columns that match our filter to PHPExcel **/ $objPHPExcel = $objReader->load($inputFileName);

Consulte Examples/Reader/exampleReader09.php para obtener un ejemplo de este cdigo de trabajo.

En este ejemplo no es particularmente til, porque slo puede ser utilizado en circunstancias muy especficas (cuando slo quieres celdas del rango A1:E7 de la hoja de clculo. Un filtro genrico de leer probablemente sera ms til: /** Define a Read Filter class implementing PHPExcel_Reader_IReadFilt er */ class MyReadFilter implements PHPExcel_Reader_IReadFilter { private $_startRow = 0; private $_endRow = 0; private $_columns = array();

/** Get the list of rows and columns to read */ public function __construct($startRow, $endRow, $columns) { $this->_startRow = $startRow; $this->_endRow = $endRow; $this->_columns = $columns; } public function readCell($column, $row, $worksheetName = '') { // Only read the rows and columns that were configured if ($row >= $this->_startRow && $row <= $this->_endRow) { if (in_array($column,$this->_columns)) { return true; } } return false; } } /** Create an Instance of our Read Filter, passing in the cell range **/ $filterSubset = new MyReadFilter(9,15,range('G','K'));
Consulte Examples/Reader/exampleReader10.php para obtener un ejemplo de este cdigo de trabajo.

Esto puede ser particularmente til para conservar la memoria, permitindole leer y procesar un libro grande en "trozos": un ejemplo de este uso puede ser al transferir datos de una hoja de clculo Excel a una base de datos. $inputFileType = 'Excel5'; $inputFileName = './sampleData/example2.xls'; /** Define a Read Filter class implementing PHPExcel_Reader_IReadFilt er */ class chunkReadFilter implements PHPExcel_Reader_IReadFilter { private $_startRow = 0; private $_endRow = 0; /** Set the list of rows that we want to read */ public function setRows($startRow, $chunkSize) { $this->_startRow = $startRow; $this->_endRow = $startRow + $chunkSize; } public function readCell($column, $row, $worksheetName = '') { // Only read the heading row, and the configured rows if (($row == 1) || ($row >= $this->_startRow && $row < $this->_endRow)) { return true; } return false; } } /** Create a new Reader of the type defined in $inputFileType $objReader = PHPExcel_IOFactory::createReader($inputFileType); **/

/** Define how many rows we want to read for each "chunk" $chunkSize = 2048; /** Create a new Instance of our Read Filter **/ $chunkFilter = new chunkReadFilter(); /** Tell the Reader that we want to use the Read Filter $objReader->setReadFilter($chunkFilter);

**/

**/

/** Loop to read our worksheet in "chunk size" blocks **/ for ($startRow = 2; $startRow <= 65536; $startRow += $chunkSize) { /** Tell the Read Filter which rows we want this iteration **/ $chunkFilter->setRows($startRow,$chunkSize); /** Load only the rows that match our filter **/ $objPHPExcel = $objReader->load($inputFileName); // Do some processing here }

Consulte Examples/Reader/exampleReader12.php para obtener un ejemplo de este cdigo de trabajo.

El uso de filtros de lectura se aplica a: Excel2007 Excel2003XML Excel5 S S OOCalc no S SYLK Gnumeric S CSV S

4.4. Combina varios archivos en un nico objeto PHPExcel


Mientras que puede limitar el nmero de hojas de clculo que se leen desde un archivo de libro utilizando el mtodo setLoadSheetsOnly(), algunos lectores tambin permiten combinar varias "hojas" individuales de diferentes archivos en un solo objeto PHPExcel, donde cada archivo individual es una sola hoja de clculo dentro de ese libro. Para cada archivo que lees, tienes que indicar qu ndice de hoja de clculo debe ser cargado en el mtodo setSheetIndex() de la $objReader, entonces utilice el mtodo loadIntoExisting() en lugar de al mtodo load() para leer el archivo en la hoja de clculo. $inputFileType = 'CSV'; $inputFileNames = array('./sampleData/example1.csv', './sampleData/example2.csv' './sampleData/example3.csv' ); /** Create a new Reader of the type defined in $inputFileType $objReader = PHPExcel_IOFactory::createReader($inputFileType); **/

/** Extract the first named file from the array list **/ $inputFileName = array_shift($inputFileNames); /** Load the initial file to the first worksheet in a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName); /** Set the worksheet title (to the filename that we've loaded) **/ $objPHPExcel->getActiveSheet() ->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); /** Loop through all the remaining files in the list **/ foreach($inputFileNames as $sheet => $inputFileName) { /** Increment the worksheet index pointer for the Reader **/ $objReader->setSheetIndex($sheet+1); /** Load the current file into a new worksheet in PHPExcel **/ $objReader->loadIntoExisting($inputFileName,$objPHPExcel); /** Set the worksheet title (to the filename that we've loaded) **/ $objPHPExcel->getActiveSheet() >setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); }

Consulte Examples/Reader/exampleReader13.php para obtener un ejemplo de este cdigo de trabajo.

Note que usando el mismo ndice de hoja para mltiples lminas no anexar archivos en la misma hoja, pero sobrescribir los resultados de la carga anterior. No se puede cargar varios archivos CSV en la misma hoja de clculo. Combina varios archivos en un nico objeto PHPExcel se aplica a: Excel2007 NO Excel5 NO Excel2003XML NO OOCalc NO SYLK s Gnumeric NO CSV S

4.5. Combinacin de filtros de lectura con elsetSheetIndex() mtodo para dividir un archivo CSV grande a travs de mltiples hojas de trabajo
Archivo .xls an Excel5 BIFF se limita a 65536 filas en una hoja de clculo, mientras que el archivo .xlsx Excel2007 Microsoft Office Open XML SpreadsheetML est limitado a 1.048.576 filas en una hoja de clculo; pero no est limitado de un archivo CSV por espacio disponible en disco. Esto significa que normalmente no sera capaces de leer todas las filas de un archivo CSV muy grande que excede los lmites y guardarlo como un archivo Excel5 o Excel2007. Sin embargo, mediante el uso de filtros de lectura para leer el archivo CSV en "trozos" (utilizando la clase que hemos definido en la seccin chunkReadFilter 5.3 por encima de) y el mtodo setSheetIndex() de la $objReader, podemos compartir el archivo CSV a travs de varias hojas individuales. $inputFileType = 'CSV'; $inputFileName = './sampleData/example2.csv'; echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' usin g IOFactory with a defined reader type of ',$inputFileType,'<br />'; /** Create a new Reader of the type defined in $inputFileType **/ $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Define how many rows we want to read for each "chunk" $chunkSize = 65530; /** Create a new Instance of our Read Filter **/ $chunkFilter = new chunkReadFilter(); **/

/** Tell the Reader that we want to use the Read Filter **/ /** and that we want to store it in contiguous rows/columns $objReader->setReadFilter($chunkFilter) ->setContiguous(true); /** Instantiate a new PHPExcel object manually $objPHPExcel = new PHPExcel(); **/

**/

/** Set a sheet index **/ $sheet = 0; /** Loop to read our worksheet in "chunk size" blocks **/ /** $startRow is set to 2 initially because we always read the headin gs in row #1 **/ for ($startRow = 2; $startRow <= 1000000; $startRow += $chunkSize) { /** Tell the Read Filter which rows we want to read this loop **/ $chunkFilter->setRows($startRow,$chunkSize); /** Increment the worksheet index pointer for the Reader **/ $objReader->setSheetIndex($sheet); /** Load only the rows that match our filter into a new worksheet **/ $objReader->loadIntoExisting($inputFileName,$objPHPExcel); /** Set the worksheet title for the sheet that we've justloaded) **/ /** and increment the sheet index as well **/ $objPHPExcel->getActiveSheet()>setTitle('Country Data #'.(++$sheet));

Consulte Examples/Reader/exampleReader14.php para obtener un ejemplo de este cdigo de trabajo.

Este cdigo se lea 65.530 filas al mismo tiempo desde el archivo CSV que estamos cargando y cada "trozo" en una nueva hoja de clculo. El mtodo setContiguous() para el lector es importante aqu. Es aplicable slo cuando se trabaja con un filtro de leer e identifica las clulas deben ser almacenadas por su posicin dentro del archivo CSV, o su posicin en relacin con el filtro o no. Por ejemplo, si el filtro devuelve true para las clulas en la gama B2:C3, entonces con setContiguous establecida en false (por defecto) estos eran cargados como B2:C3 en el objeto PHPExcel; Pero con setContiguous establecido en true, se cargan como a1. Partiendo de un nico archivo cargado a travs de mltiples hojas de clculo se aplica a: Excel2007 NO Excel5 NO Excel2003XML NO OOCalc NO SYLK NO Gnumeric NO CSV S

4.6. Tubo o ficha valor archivos separados


Por defecto el cargador CSV para cargar un archivo donde se utiliza la coma como separador, pero se puede modificar para cargar archivos de valor ficha - o tubos separados mediante el mtodo setDelimiter(). $inputFileType = 'CSV'; $inputFileName = './sampleData/example1.tsv'; /** Create a new Reader of the type defined in $inputFileType $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Set the delimiter to a TAB character **/ $objReader->setDelimiter("\t"); // $objReader->setDelimiter('|'); /** Load the file to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName);
Consulte Examples/Reader/exampleReader15.php para obtener un ejemplo de este cdigo de trabajo.

**/

Adems el delimitador, tambin puede utilizar los siguientes mtodos para establecer otros atributos para la carga de datos: setEnclosure() valor por defecto es" el valor predeterminado de setLineEnding() es PHP_EOL setInputEncoding() valor por defecto es UTF-8 Ajuste delimitador CSV se aplica a: Excel2007 NO Excel5 NO Excel2003XML NO OOCalc NO SYLK NO Gnumeric NO CSV S

4.7. Unas breves palabras sobre la carpeta del valor avanzado


Al cargar datos desde un archivo que no contenga ninguna informacin de formato, como un archivo CSV, luego se leen datos como cadenas o nmeros (flotador o entero). Esto significa que no reconoce automticamente PHPExcel fechas (como "16 de abril de 2009" o "13:30"), valores booleanos ("TRUE" o "FALSE"), los porcentajes ("75%"), hipervnculos ("http://www.phpexcel.net"), etc. como algo ms que simples cuerdas. Sin embargo, usted puede aplicar procesamiento adicional que se ejecuta contra estos valores durante el proceso de carga dentro de una carpeta de valor. Una carpeta de valor es una clase que implemente la interfaz PHPExcel_Cell_IValueBinder. Debe contener un mtodo bindValue() que acepta un PHPExcel_Cell y un valor como argumentos y devuelve un booleano verdadero o falso que indica si la celda del libro ha sido poblada con el valor o no. La carpeta del valor avanzado implementa dicha clase: entre otras pruebas, se identifica una cadena que comprende "TRUE" o "FALSE" (basado en opciones de localizacin) y se establece en un valor booleano; o un nmero en formato cientfico (e.g. "1.234e-5") y lo convierte en un flotador; o fechas y tiempos, convirtindolos a su valor de marca de hora de Excel antes de almacenar el valor en el objeto cell. Tambin define el formato de cadenas que se identifican como fechas, tiempos o porcentajes. Podra ampliarse fcilmente para proporcionar tratamiento adicional (incluyendo texto o formato de celda) cuando encuentra un hipervnculo, o formato HTML dentro de un archivo CSV. As que usando un aglomerante de valor permite mucha ms flexibilidad en la lgica del cargador al leer ficheros de texto sin formato. /** Tell PHPExcel that we want to use the Advanced Value Binder **/ PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() ); $inputFileType = 'CSV'; $inputFileName = './sampleData/example1.tsv'; $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objReader->setDelimiter("\t"); $objPHPExcel = $objReader->load($inputFileName);
Consulte Examples/Reader/exampleReader15.php para obtener un ejemplo de este cdigo de trabajo.

Carga usando un aglomerante de valor se aplica a: Excel2007 NO Excel5 NO Excel2003XML NO OOCalc NO SYLK NO Gnumeric NO CSV S

5. Manejo de errores
Por supuesto, usted siempre debe aplicar algn error de manipulacin a las secuencias de comandos, as. PHPExcel lanza excepciones, as que puedes envolver todo el cdigo que tiene acceso a los mtodos de biblioteca dentro de los bloques Try/Catch para atrapar a cualquier problema que se encuentran y tratar con ellos de manera apropiada. Los lectores PHPExcel lanzar un PHPExcel_Reader_Exception. $inputFileName = './sampleData/example-1.xls'; try { /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); } catch(PHPExcel_Reader_Exception $e) { die('Error loading file: '.$e->getMessage()); }
Consulte Examples/Reader/exampleReader16.php para obtener un ejemplo de este cdigo de trabajo.

6. Mtodos auxiliares
Puede recuperar una lista de nombres de hoja de clculo contenido en un archivo sin cargar el archivo entero mediante listWorksheetNames() mtodo del lector; del mismo modo, un mtodo listWorksheetInfo() a recuperar las dimensiones de la hoja de clculo en un archivo sin necesidad de cargar y analizar el archivo entero. El mtodo listWorksheetNames() devuelve un array simple listado el nombre de cada hoja de clculo dentro del libro: $objReader = PHPExcel_IOFactory::createReader($inputFileType); $worksheetNames = $objReader->listWorksheetNames($inputFileName); echo '<h3>Worksheet Names</h3>'; echo '<ol>'; foreach ($worksheetNames as $worksheetName) { echo '<li>', $worksheetName, '</li>'; } echo '</ol>';
Consulte Examples/Reader/exampleReader18.php para obtener un ejemplo de este cdigo de trabajo.

El mtodo listWorksheetInfo() devuelve un array anidado, con cada entrada listado el nombre y las dimensiones de una hoja de clculo: $objReader = PHPExcel_IOFactory::createReader($inputFileType); $worksheetData = $objReader->listWorksheetInfo($inputFileName); echo '<h3>Worksheet Information</h3>'; echo '<ol>'; foreach ($worksheetData as $worksheet) { echo '<li>', $worksheet['worksheetName'], '<br />'; echo 'Rows: ', $worksheet['totalRows'], ' Columns: ', $worksheet['totalColumns'], '<br />'; echo 'Cell Range: A1:', $worksheet['lastColumnLetter'], $worksheet['totalRows']; echo '</li>'; } echo '</ol>';
Consulte Examples/Reader/exampleReader19.php para obtener un ejemplo de este cdigo de trabajo.

You might also like