Está en la página 1de 59

PHPExcel Documentacin para desarrolladores

Author: Version: Date:

Maarten Balliauw 1.7.4 27 April 2011

1.

Contents

1. CONTENTS........................................................................................................................................................2 2. REQUISITOS PREVIOS..................................................................................................................................5 PUEDE ELIMINAR ESTA DEPENDENCIA PARA ESCRIBIR EXCEL2007 ARCHIVOS (NO PARA LEER) MEDIANTE EL USO DE LA PCLZIP QUE SE INCLUYE CON PHPEXCEL. SEE THE FAQ SECTION OF THIS DOCUMENT ( 2.4.2 ) FOR DETAILS ABOUT THIS. VEA LA SECCIN DE PRE UNTAS FRECUENTES DE ESTE DOCUMENTO ( 2.4.2 ) PARA M!S DETALLES SOBRE ESTO. PCLZIP DOES HAVE A DEPENDENCY ON PHP"S ZLIB EXTENSION BEIN ENABLED. PCLZIP TIENE UNA DEPENDENCIA EN ZLIB EXTENSIN PHP EST! HABILITANDO.............................................................................................................................# 2.$. LAS INSTRUCCIONES DE INSTALACIN.....................................................................................................................# 2.2. PRIMEROS PASOS.................................................................................................................................................# 2.%. ENLACES &TILES Y HERRAMIENTAS.........................................................................................................................' 2.3.1. OpenXML / SpreadsheetML....................................................................................................................6 2.3.2. Preguntas ms frecuentes.......................................................................................................................6 2.3.3. Tutoria es................................................................................................................................................!
BIBLIOTECA

3. ARQUITECTURA...........................................................................................................................................10 %.$. ESQUEM!TICA..................................................................................................................................................$0 %.2. LAZY LOADER..................................................................................................................................................$0 %.%. SPREADSHEET(HO(A DE CALCULO) EN MEMORIA...................................................................................................$0 %.4. ESCRITURA Y LECTURA......................................................................................................................................$$ %.#. FLUIDO INTERFACES...........................................................................................................................................$2 4. CREACIN DE UNA SPREADSHEET(HOJA DE CALCULO)..............................................................14 4.$. LA CLASE PHPEXCEL.......................................................................................................................................$4 4.2. OPCIONES DE CONFI URACIN.............................................................................................................................$4 ".2.1. # a macenamiento en cach$ de una ce da...........................................................................................1" ".2.2. %dioma / &onfiguraci'n regiona ..........................................................................................................16 4.%. ELIMINACIN DE UN LIBRO DE LA MEMORIA..........................................................................................................$7 4.4. )OR*SHEETS...................................................................................................................................................$7 4.#. ACCESSIN CELLS.............................................................................................................................................$7 ".(.1. # esta) ecimiento de un *a or de a ce da por coordenada................................................................1+ ".(.2. ,ecuperaci'n de una ce da de coordenadas........................................................................................1+ ".(.3. # esta) ecimiento de un *a or de ce da de a co umna - a fi a..........................................................1+ ".(.". ,ecuperaci'n de una ce da por co umna - fi a....................................................................................1. ".(.(. Looping ce das......................................................................................................................................1. ".(.6. /so de carpetas *a or para faci itar a entrada de datos.....................................................................1! 4.'. PHPEXCEL RECETAS.........................................................................................................................................20 ".6.1. Marco de ho0a de c cu o de os metadatos de un................................................................................21 ".6.2. Marco acti*a de ho0a de una ho0a de c cu o.......................................................................................21 ".6.3. #scri)e una fecha en una ce da............................................................................................................21 ".6.". #scri)ir una f'rmu a en una ce da.......................................................................................................22 ".6.(. &onfiguraci'n regiona para os preparados en..................................................................................22 ".6.6. #scri)a un carcter de nue*a 2nea 34 n3 en una ce da 56 t 7 #nter8..................................................23 ".6.+. #sta) e9ca e:p 2citamente tipo de datos de una ce da..........................................................................2" ".6... &am)iar una ce da en una direcci'n /,L hacer c ic en......................................................................2" ".6.!. Marco orientaci'n de a pgina una ho0a de c cu o - e tama;o.......................................................2" ".6.11. &onfigurar pgina< #sca a de opciones.............................................................................................2" ".6.11. Pgina de mrgenes............................................................................................................................2( ".6.12. &entro de una pgina hori9onta / *ertica .........................................................................................26 ".6.13. 60uste de a ca)ecera - pie de pgina de impresi'n de una ho0a de c cu o.....................................26 ".6.1". Marco rompe a impresi'n en una fi a o co umna..............................................................................2. ".6.1(. Mostrar u ocu tar 2neas de di*isi'n de impresi'n cuando................................................................2. ".6.16. Marco fi as / co umnas a repetir en a parte superior / i9=uierda......................................................2! ".6.1+. #specificar e rea de impresi'n........................................................................................................2! ".6.1.. >ormato de ce das...............................................................................................................................2! ".6.1!. ?@mero de formatos............................................................................................................................31 ".6.21. 6 ineaci'n - a0ustar e te:to...............................................................................................................31

PHPExcel Developer Documentation

".6.21. &onfiguraci'n de esti o predeterminado de un i)ro.........................................................................32 ".6.22. #sti o )ordes de a ce da.....................................................................................................................32 ".6.23. >ormato condiciona en una ce da.....................................................................................................33 ".6.2". 6;ade un comentario a una ce da......................................................................................................3" ".6.2(. 6p icar autofi tro a un rango de ce das..............................................................................................3" ".6.26. Aefinici'n de a seguridad en una ho0a de c cu o............................................................................3" ".6.2+. Marco de *a idaci'n de datos en una ce da.......................................................................................3( ".6.2.. Marco co umna de ancho de una.......................................................................................................36 ".6.2!. Mostrar u ocu tar una co umna..........................................................................................................3+ ".6.31. Brupo / es=uema de una co umna......................................................................................................3+ ".6.31. Marco fi a a a tura de un...................................................................................................................3+ ".6.32. Mostrar u ocu tar una fi a...................................................................................................................3+ ".6.33. Brupo / es)o9ar una fi a.....................................................................................................................3+ ".6.3". &om)inar / unmerge ce das................................................................................................................3. ".6.3(. %nserci'n de fi as / co umnas..............................................................................................................3. ".6.36. 6gregar un di)u0o a una ho0a de c cu o...........................................................................................3. ".6.3+. 6;adir te:to enri=uecido a una ce da.................................................................................................3! ".6.3.. Aefinir un rango con nom)re.............................................................................................................3! ".6.3!. ,edirigir a sa ida a a Ce) de na*egador de un c iente..................................................................."1 ".6."1. 60uste de ancho de co umna predeterminado...................................................................................."1 ".6."1. 60uste de a a tura de a fi a por defecto............................................................................................."1 ".6."2. 6gregar un di)u0o a una ho0a de BA................................................................................................."1 ".6."3. Marco ho0a de c cu o e ni*e de 9oom............................................................................................."1 ".6."". Do0a de co or de ficha........................................................................................................................."2 ".6."(. &rear ho0as de c cu o en un i)ro....................................................................................................."2 ".6."6. Ocu tos ho0as de c cu o 5ho0a de estados8........................................................................................"2 ".6."+. 6 i9=uierda ho0a de Aerecho.............................................................................................................."2 5. REALIZACIN DE CLCULOS DE LA FR ULA...............................................................................43 #.$. USANDO EL MOTOR DE C!LCULO PHPEXCEL........................................................................................................4% #.2. LIMITACIONES CONOCIDAS..................................................................................................................................44 (.2.1. Precedencia de Operadores.................................................................................................................."" (.2.2. Las f'rmu as =ue se usan n@meros - te:to............................................................................................"" !. LECTURA " ESCRITURA DE ARCHIVOS...............................................................................................45 '.$. PHPEXCEL+IOFACTORY..................................................................................................................................4# 6.1.1. &rear PDP#:ce E,eaderE%,eader uti i9ando PDP#:ce E%O>actor-................................................."( 6.1.2. &rear PDP#:ce EFriterE%Friter uti i9ando PDP#:ce E%O>actor-...................................................."6 '.2. EXCEL 2007 (SPREADSHEETML) FORMATO DE ARCHIVO.......................................................................................4' 6.2.1. PDP#:ce E,eaderE#:ce 211+............................................................................................................."6 6.2.2. PDP#:ce EFriterE#:ce 211+..............................................................................................................."+ '.%. EXCEL # (BIFF) FORMATO DE ARCHIVO..............................................................................................................47 6.3.1. PDP#:ce E,eaderE#:ce (...................................................................................................................". 6.3.2. PDP#:ce EFriterE#:ce (....................................................................................................................."! '.4. EXCEL 200% FORMATO DE ARCHIVO XML.........................................................................................................4, 6.".1. PDP#:ce E,eaderE#:ce 2113XML....................................................................................................."! '.#. ENLACE SIMBLICO (SYL*).............................................................................................................................#0 6.(.1. PDP#:ce E,eaderESGLH.....................................................................................................................(1 '.'. CSV (VALORES SEPARADOS POR COMAS).............................................................................................................#0 6.6.1. PDP#:ce E,eaderE&SI.......................................................................................................................(1 6.6.2. PDP#:ce EFriterE&SI .......................................................................................................................(2 '.7. HTML...........................................................................................................................................................#% 6.+.1. PDP#:ce EFriterEDTML ....................................................................................................................(3 '.-. PDF...............................................................................................................................................................## 6...1. PDP#:ce EFriterEPA> .......................................................................................................................(( '.,. ENERACIN DE ARCHIVOS DE EXCEL A PARTIR DE PLANTILLAS (LEER. MODIFICAR Y ESCRIBIR)....................................#' #. CR$DITOS.......................................................................................................................................................5# APPENDI% A& CLAVES VLIDAS DE ATRIZ DE APPL"FRO ARRA" PARA ESTILO () ..........5'

PHPExcel Developer Documentation

PHPExcel Developer Documentation

2.

Requisitos previos

Requisitos de software
El si uiente so!tware es necesario para "esarrollar con PHPExcel# PHP version $.2.0 or newer PHP versi%n $.2.0 o posterior PHP extension p&p'(ip ena)le" *+ extensi%n p&p'(ip &a)ilita"as con PHP *+ PHP extension p&p'xml ena)le" PHP p&p'xml extensi%n &a)ilita"o PHP extension p&p' "2 ena)le" ,i! not compile" in+ extensi%n "e PHP p&p' "2 &a)ilita"o ,si no se compilan en+

*) Php_zip s%lo es necesario por PHPExcel_Reader_Excel2007 PHPExcel_!riter_Excel2007 PHPExcel_Reader_""#alc$ .n ot&er wor"s/ i! -ou nee" PHPExcel to &an"le .xlsx or .o"s !iles -ou will nee" t&e (ip extension/ )ut ot&erwise not. En otras pala)ras/ si uste" necesita PHPExcel "e mane0ar. 1lsx o arc&ivos. 2"s ten"r3 la extensi%n (ip/ pero no lo contrario. Pue"e eliminar esta "epen"encia para escri)ir excel2007 arc&ivos ,no para leer+ me"iante el uso "e la )i)lioteca P456ip 7ue se inclu-e con PHPExcel. See the FAQ section of this document ( 2.4.2 ) for details about this. 8ea la secci%n "e pre untas !recuentes "e este "ocumento , 2.4.2 + para m3s "etalles so)re esto. PCLZip does ha e a dependenc! on P"P#s $lib e%tension bein& enabled. P456ip tiene una "epen"encia en (li) extensi%n PHP est3 &a)ilitan"o.

2.1.

Las instrucciones de instalacin

5a instalaci%n es mu- !3cil# copiar el conteni"o "e la carpeta "e las clases a cual7uier lu ar in -our application re7uire". en su aplicaci%n re7uiere.

Ejemplo: 9i su "irectorio we) ra:( es ; var ; www ; es posi)le 7ue "esee crear una su)carpeta llama"a ; var ; www ; clases ; - copiar los arc&ivos en esa carpeta por lo 7ue terminan con los arc&ivos#

;var;www;4lasses;PHPExcel.p&p ;var;www;4lasses;PHPExcel;4alculation.p&p ;var;www;4lasses;PHPExcel;4ell.p&p ...

2.2.

Primeros pasos

<na )uena manera "e empe(ar es e0ecutar al unas "e las prue)as inclui"as en la "escar a.
4opie el =Prue)as= carpeta al la"o "e su =4lases= carpeta "es"e arri)a por lo 7ue terminan con#

;var;www;>ests;01simple.p&p ;var;www;>ests;02t-pes.p&p ...

PHPExcel Developer Documentation

Empiece a correr las prue)as/ se?alan"o su nave a"or para 7ue los scripts "e prue)a#

&ttp#;;example.com;>ests;01simple.p&p &ttp#;;example.com;>ests;02t-pes.p&p ...


@ota# Pue"e ser necesario mo"i!icar el incluir o re7uerir "eclaraciones al comien(o "e ca"a uno "e los scripts "e prue)a si su =4lases= carpeta "e arri)a se llama "e otra manera.

2.3.

Enlaces tiles y herramientas

Ha- al unos enlaces - &erramientas 7ue son mu- Atiles cuan"o se "esarrolla utili(an"o PHPExcel. Please re!er to t&e PHPExcel 4o"ePlex pa es !or an up"ate version o! t&e list )elow. Por !avor/ consulte la p3 ina "e 4o"ePlex PHPExcel para una versi%n "e actuali(aci%n "e la lista a continuaci%n.

2.3.1.

OpenXML / preads!eetML

Archi%o de docu&entaci'n en (or&ato &ttp#;;www.ecmaBinternational.or ;news;>44$'current'worC;>44$'availa)le'"ocs.&tm &ttp#;;www.ecmaBinternational.or ;news;>44$'current'worC;>44$'availa)le'"ocs.&tm "pen)*+ Explained e,-oo. "pen)*+ Explicaci'n de e,li-ro &ttp#;;openxml"eveloper.or ;articles;1D70.aspx &ttp#;;openxml"eveloper.or ;articles;1D70.aspx *icroso(t "((ice #o&pati-ilit/ Pac. (or !ord Excel and Po0erPoint 2007 1ile 1or&ats Pa2uete de co&pati-ilidad de *icroso(t "((ice para !ord Excel / Po0erPoint 2007 1or&atos de archi%o &ttp#;;www.microso!t.com;"ownloa"s;"etails.aspxE!amil-i"FD41)3470B3aeDB4aeeBG!43B cH))74c"14HHI"ispla-lan Fen &ttp#;;www.microso!t.com;"ownloa"s;"etails.aspxE !amil-i"FD41)3470B3aeDB4aeeBG!43BcH))74c"14HHI"ispla-lan Fen "pen)*+ Pac.a3e Explorer "pen)*+ Explorador de pa2uetes &ttp#;;www.co"eplex.com;PacCa eExplorer; &ttp#;;www.co"eplex.com;PacCa eExplorer;

2.3.2.

Preguntas ms recuentes

El 1A4 &5s p53inas para PHPExcel se puede encontrar en http:66000$codeplex$co&6PHPExcel6!i.i6Vie0$aspx7title81A49re(errin3:itle8Re2uire&ents $

Parece "ue !a# un pro$lema con la codi%icacin de caracteres ...


Es necesario el uso "e co"i!icaci%n <>JBG para to"os los textos en PHPExcel. ;( the script uses di((erent encodin3 then it is possi-le to con%ert the texts 0ith PHP<s icon%=) (unction$ 9i la secuencia "e coman"os utili(a la co"i!icaci%n "i!erentes/ entonces es posi)le convertir los textos con los iconv ,+ "e PHP.PHP co&plains a-out >ipArchi%e not -ein3 (ound PHP se 7ue0a "e 7ue no se encuentran 6ipArc&ive

PHP se "ue&a de "ue no se encuentran 'ip(rc!i)e


Ase Arese "e 7ue cumple to"os los re7uisitos/ especialmente la extensi%n p&p'(ip "e)e estar &a)ilita"o. 5a clase 6ipArc&ive s%lo es necesario cuan"o la lectura o la escritura 7ue utili(an !ormatos "e compresi%n 6ip ,excel2007 - 224alc+. 9ince version 1.7.H t&e P456ip li)rar- &as )een )un"le" wit& PHPExcel as an alternative to t&e 6ipArc&ive class. Des"e la versi%n 1.7.H "e la )i)lioteca P456ip &a si"o inclui"o con PHPExcel como una alternativa a la clase 6ipArc&ive. Esto se pue"e activar llaman"o al#

PHPExcel Developer Documentation

PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);

antes "e llamar al mKto"o save "el Escritor excel2007. Pue"e volver a usar 6ipArc&ive llaman"o al#
PHPExcel_Settings::setZipClass(PHPExcel_Settings::ZIPARCHIVE);

En la actuali"a"/ esto s%lo le permite escri)ir excel2007 arc&ivos sin la necesi"a" "e 6ipArc&ive ,no leer excel2007 o 224alc+

Excel 2**+ no puede a$rir el arc!i)o ,enerado por PHPExcel-.riter-2**+ en .indo/s


"Excel encontr contenido ilegible en '*. xlsx. Do you want to recover the contents o this wor!boo!" #Desea recuperar el contenido de este libro" $ you trust the source o this wor!boo!% clic! &es.' (i con )a en el origen de este libro% haga clic en () ". Al unas versiones "e la extensi%n p&p'(ip en Lin"ows contiene un error al crear arc&ivos 6.P. >&e version t&at can )e !oun" on &ttp#;;snaps.p&p.net;win32;p&p$.2Bwin32Blatest.(ip s&oul" worC at all times. 5a versi%n 7ue se pue"e encontrar en &ttp#;;snaps.p&p.net;win32;p&p$.2Bwin32B latest.(ip "e)en tra)a0ar en to"o momento. Por otra parte/ la actuali(aci%n a lo menos - PHP $.2.D "e)er:a resolver el pro)lema. 9i no pue"e encontrar una copia limpia "e 6ipArc&ive/ entonces uste" pue"e utili(ar la )i)lioteca P456ip como una alternativa al escri)ir excel2007 arc&ivos/ como se "escri)e anteriormente.

Error %atal0 tama1o de la memoria dom2sticos de xxx $#tes a,otado 3tratado de asi,nar $#tes ###4 en 555 aaa en l6nea
PHPExcel tiene una =memoria= representaci%n "e una &o0a "e c3lculo/ por lo 7ue es suscepti)le "e limitaciones "e memoria "e PHP. >&e memor- ma"e availa)le to PHP can )e increase" )- e"itin t&e value o! t&e memor-limit "irective in -our p&p.ini !ile/ or )- usin iniset,Mmemor-'limitM/ M12GMM+ wit&in -our co"e ,.9P permittin +. 5a memoria "isponi)le para PHP pue"e ser aumenta"a me"iante la mo"i!icaci%n "el valor "e la "irectiva memor-5imit en su arc&ivo p&p.ini/ o utili(an"o iniset ,Mmemor-'limitM/ M12GM M+ "entro "e su c%"i o ,.9P lo permite+. Al unos lectores - escritores son m3s r3pi"os 7ue otros/ - 7ue tam)iKn utili(an "i!erentes canti"a"es "e memoria. Nou can !in" some in"ication o! t&e relative per!ormance an" memorusa e !or t&e "i!!erent Oea"ers an" Lriters/ over t&e "i!!erent versions o! PHPExcel/ on t&e "iscussion )oar" . <ste" pue"e encontrar al unas in"icaciones so)re el ren"imiento relativo - el uso "e memoria para los "i!erentes lectores - escritores/ so)re las "i!erentes versiones "e PHPExcel/ en el !oro "e "e)ate . 9i -a &as aumenta"o la memoria &asta un m3ximo/ o no pue"e cam)iar su l:mite "e memoria/ entonces esta discusi'n en el !oro se "escri)en al unos "e los mKto"os 7ue se pue"en aplicar para re"ucir el uso "e la memoria "e las secuencias "e coman"os utili(an"o PHPExcel.

Proteccin en mi !o&a de c7lculo no est7 %uncionando8


Al &acer uso "e cual7uiera "e las caracter:sticas "e protecci%n "e &o0a "e c3lculo ,por e0emplo/ amplia protecci%n "e las cKlulas/ 7ue pro&:)e eliminar !ilas/ ...+/ ase Arese "e activar la se uri"a" "e &o0a "e c3lculo. >&is can !or example )e "one liCe t&is# Esto pue"e &acerse/ por e0emplo/ as:#

PHPExcel Developer Documentation

$objPHPExcel !getActi"eS#eet() !getP$otection() !setS#eet(t$%e);

X caracter6stica no %unciona con PHPExcel-9eader-: / PHPExcel-.riter-'


@o to"as las caracter:sticas "e PHPExcel se aplican en to"os los ; ra)a"or "e clases Oea"er. >&is is mostl- "ue to un"erl-in li)raries not supportin a speci!ic !eature or not &avin implemente" a speci!ic !eature. Esto se "e)e principalmente a las )i)liotecas su)-acente no apo-ar una caracter:stica espec:!ica o no &a)er aplica"o una caracter:stica espec:!ica. Por e0emplo Auto!iltro no est3 implementa"a en PEOA 9prea"s&eet'Excel'writer/ 7ue es la )ase "e nuestro escritor Excel$. Poco a poco estamos crean"o una lista "e caracter:sticas/ 0unto con los "i!erentes lectores escritores 7ue los apo-an/ en la =!uncionali"a" "e la 4ru(BOe!erence.xls= arc&ivo en la carpeta "e "ocumentaci%n ;.

Las %rmulas no parecen ser calculado en el uso de pa"uete de compati$ilidad Excel2**38


Este es un comportamiento normal "el pa7uete "e compati)ili"a"/ excel2007 muestra esto correctamente. ?se PHPExcel_!riter_Excel@ i( /ou reall/ need calculated %alues or (orce recalculation in Excel200A$ PHPExcel'Lriter'Excel$ utili(ar si realmente necesita los valores calcula"os/ o "e c3lculo vi ente en Excel2003.

Esta$lecimiento del anc!o de columna no es %ia$le al 1**;


>ratar "e esta)lecer el anc&o "e columna/ un pro)lema "e experiencia. L&en . open t&e !ile in Excel/ t&e actual wi"t& is 0.71 less t&an it s&oul" )e. 4uan"o a)ro el arc&ivo en Excel/ el anc&o real es "e 0/71 menos "e lo 7ue "e)er:a ser. 5a respuesta corta es 7ue PHPExcel utili(a una me"i"a "on"e se inclu-e el relleno. Bee section: CBettin3 a colu&n<s 0idthD (or &ore details$ 8ea la secci%n# =Marco columna "e un anc&o= para o)tener m3s "etalles.

<Cmo puedo usar con mi PHPExcel marco


Ha- al unas instrucciones para el uso "e PHPExcel con Poomla en el Joro "e PoomlaQ A pa e o! a"vice on usin PHPExcel in t&e Nii !rameworC <na p3 ina "e conse0os so)re el uso "e PHPExcel en el marco Nii >&e BaCer- &as some &elper classes !or rea"in an" writin wit& PHPExcel wit&in 4aCePHP 5a pana"er:a tiene al unas clases "e a-u"a para la lectura - la escritura con PHPExcel en 4aCePHP .nte ratin PHPExcel into Ro&ana &ttp#;;www.!l-nsarm-.com;2010;07;p&pexcelBmo"uleB!orB Co&anaB3; an" STUVWXYZ[\ PHPExcel [ Ro&ana JrameworC 5a inte raci%n "e PHPExcel en Ro&ana &ttp#;;www.!l-nsarm-.com;2010;07;p&pexcelBmo"uleB!orBCo&anaB3; - STUVWXYZ[\ PHPExcel [ Ro&ana JrameworC <sin PHPExcel wit& >-po3 <san"o PHPExcel con >-po3

=oomla autocar,ador inter%iere con PHPExcel autocar,ador


>&anCs to peterrl-nc& !or t&e !ollowin a"vice on resolvin issues )etween t&e PHPExcel autoloa"er an" Poomla Autoloa"er ]racias a peterrl-nc& "e los si uientes conse0os so)re cuestiones resolver entre el car a"or - el car a"or autom3tico PHPExcel Poomla

PHPExcel Developer Documentation

2.3.3.

>utoriales
;n3lEs PHPExcel tutorial &ttp#;;openxml"eveloper &ttp#;;openxml"eveloper

1rench PHPExcel tutorial 1rancEs PHPExcel tutorial &ttp#;; Bernaelsten."eveloppe(.com;tutoriels;excel2007; &ttp#;; B ernaelsten."eveloppe(.com;tutoriels;excel2007; Russian PHPExcel Flo3 Postin3s Rusia PHPExcel pu-licaciones en -lo3s &ttp#;;www.we)B0unior.net;so("anieBexcelB!a00lovBsBpomos&&-uBp&pexcel; &ttp#;;www.we)B0unior.net;so("anieBexcelB!a00lovBsBpomos&&-uBp&pexcel;

A Gapanese,lan3ua3e introduction to PHPExcel &ttp#;;0ournal.m-com.co.0p;articles;200D;03;0H;p&pexcel;in"ex.&tml ?na introducci'n de len3ua Haponesa para PHPExcel &ttp#;;0ournal.m-com.co.0p;articles;200D;03;0H;p&pexcel;in"ex.&tml

PHPExcel Developer Documentation

3.
3.1.

(r"uitectura
Esquemtica

3.2.

Lazy Loader

PHPExcel implementa un autocar a"or o = estor "e pere(oso=/ lo 7ue si ni!ica 7ue no es necesario incluir to"os los arc&ivos "entro "e PHPExcel. .t is onl- necessar- to inclu"e t&e initial PHPExcel class !ile/ t&en t&e autoloa"er will inclu"e ot&er class !iles as an" w&en re7uire"/ so onl- t&ose !iles t&at are actuall- re7uire" )- -our script will )e loa"e" into PHP memor-. 9%lo es necesario incluir el arc&ivo inicial "e la clase PHPExcel/ a continuaci%n/ el car a"or autom3tico se inclu-en otros arc&ivos "e clase cuan"o sea necesario/ "e mo"o 7ue s%lo a7uellos arc&ivos 7ue son re7ueri"as por la secuencia "e coman"os se car a en la memoria "e PHP. >&e main )ene!it o! t&is is t&at it re"uces t&e memor- !ootprint o! PHPExcel itsel!/ so t&at it uses less PHP memor-. El principal )ene!icio "e esto es 7ue re"uce el consumo "e memoria "e PHPExcel s: mismo/ para 7ue utilice menos memoria "e PHP. 9i sus propios scripts -a "e!inir una !unci%n "e car a autom3tica/ entonces esto pue"e ser so)reescrito por la !unci%n "e car a autom3tica PHPExcel. Jor example/ i! -ou &ave# Por e0emplo/ si uste" tiene#
&%nction'__a%toloa(($class)') ''''*** +

Ha a esto en su lu ar#
&%nction',-A%toloa(($class)') ''''*** + spl_a%toloa(_$egiste$(.,-A%toloa(.);

9u car a"or autom3tico a continuaci%n/ se coBexistir con el car a"or autom3tico "e PHPExcel.

3.3.

Spreadsheet(Hoja de Calculo) en

e oria

5a ar7uitectura PHPExcel se constru-e "e una manera 7ue pue"e servir como una &o0a "e c3lculo en la memoria. >&is means t&at/ i! one woul" want to create a we) )ase" view o! a sprea"s&eet w&ic& communicates wit& PHPExcelMs o)0ect mo"el/ &e woul" onl- &ave to write t&e !rontBen" co"e. Esto si ni!ica 7ue/ si uno 7uiere crear un punto "e vista )asa"o en we)/ "e una &o0a "e c3lculo 7ue se

PHPExcel Developer Documentation

10

comunica con el mo"elo "e o)0etos "e PHPExcel/ s%lo ten"r:a 7ue escri)ir el !inal "el c%"i o "e !rente. Al i ual 7ue una &o0a "e c3lculo "e escritorio/ PHPExcel representa una &o0a "e c3lculo 7ue contiene una o m3s &o0as "e c3lculo/ 7ue contienen cKlulas con "atos/ !%rmulas/ im3 enes/ ...

3.!.

"scritura y Lectura

Por su parte/ PHPExcel no proporciona la !uncionali"a" para leer o escri)ir en una &o0a "e c3lculo persistieron ,en el "isco o en una )ase "e "atos+. >o provi"e t&at !unctionalit-/ rea"ers an" writers can )e use". Para proporcionar esa !uncionali"a"/ los lectores - escritores pue"en ser utili(a"os. De !orma pre"etermina"a/ el pa7uete PHPExcel proporciona al unos lectores - escritores/ entre ellos uno para la &o0a "e c3lculo en !ormato 2pen 1M5 ,tam)iKn conoci"o como !ormato "e arc&ivo "e Excel 2007+. <ste" no est3 limita"o a los lectores - escritores por "e!ecto/ -a 7ue son li)res "e aplicar el PHPExcel'Lriter'.Oea"er - la inter!a( "e PHPExcel'Lriter'.Lriter en una clase personali(a"a.

PHPExcel Developer Documentation

11

3.!.

"luido inter aces

PHPExcel soporta inter!aces "e !lui"e( en la ma-or:a "e lu ares. Esto si ni!ica 7ue uste" pue"e !3cilmente =ca"ena= "e las llama"as a mKto"os espec:!icos sin necesi"a" "e una nueva "eclaraci%n "e PHP. Esto si ni!ica 7ue uste" pue"e !3cilmente =ca"ena= "e las llama"as a mKto"os espec:!icos sin necesi"a" "e una nueva "eclaraci%n "e PHP Por e0emplo/ tomemos el si uiente c%"i o#
$objPHPExcel !getP$ope$ties() !setC$eato$(/0aa$ten'1allia%2/); $objPHPExcel !getP$ope$ties() !setLast0o(i&ie(1-(/0aa$ten'1allia%2/); $objPHPExcel !getP$ope$ties() !set3itle(/4&&ice'5667'8LS8'3est'9oc%,ent/); $objPHPExcel !getP$ope$ties() !setS%bject(/4&&ice'5667'8LS8'3est'9oc%,ent/); $objPHPExcel !getP$ope$ties() !set9esc$iption(/3est'(oc%,ent'&o$'4&&ice'5667'8LS8:' gene$ate('%sing'PHP'classes*/); $objPHPExcel !getP$ope$ties() !set;e-2o$(s(/o&&ice'5667'openx,l'p#p/);

PHPExcel Developer Documentation

12

$objPHPExcel !getP$ope$ties() !setCatego$-(/3est'$es%lt'&ile/);

Esto pue"e ser reescrita como#


$objPHPExcel !getP$ope$ties() '''''''''''' !setC$eato$(/0aa$ten'1allia%2/) '''''''''''' !setLast0o(i&ie(1-(/0aa$ten'1allia%2/) '''''''''''' !set3itle(/4&&ice'5667'8LS8'3est'9oc%,ent/) '''''''''''' !setS%bject(/4&&ice'5667'8LS8'3est'9oc%,ent/) '''''''''''' !set9esc$iption(/3est'(oc%,ent'&o$'4&&ice'5667'8LS8:'gene$ate('%sing' PHP'classes*/) '''''''''''' !set;e-2o$(s(/o&&ice'5667'openx,l'p#p/) '''''''''''' !setCatego$-(/3est'$es%lt'&ile/);

?tilizaci'n de inter(aces con (luidez no es necesario

inter!aces "e Jluent se &an implementa"o para proporcionar una pro ramaci%n conveniente AP.. <se o! t&em is not re7uire"/ )ut can maCe -our co"e easier to rea" an" maintain. El uso "e ellos no es o)li atorio/ pero pue"e &acer 7ue su c%"i o sea m3s !3cil "e leer - mantener.

PHPExcel Developer Documentation

13

?.
#.1.

#reaci'n de una spreadsheet=HoHa de calculo)


La clase P$PE%cel

5a clase PHPExcel es el nAcleo "e PHPExcel. 4ontiene re!erencias a las &o0as "e c3lculo 7ue !i ura/ en el "ocumento la con!i uraci%n "e se uri"a" - meta "atos "el "ocumento. Para simpli!icar el concepto PHPExcel# la clase PHPExcel representa el li)ro.

#.2.

&pciones de con iguracin

<na ve( 7ue se &an inclui"o los arc&ivos PHPExcel en el script/ pero antes "e crear instancias "e un o)0eto PHPExcel o car ar un arc&ivo "e li)ro/ &a- una serie "e opciones "e con!i uraci%n 7ue se pue"e esta)lecer 7ue a!ectar3n el comportamiento posterior "e la secuencia "e coman"os.

#.2.1.

El almacenamiento en cach' de una celda

PHPExcel utili(a un prome"io "e alre"e"or "e 1C;cell en sus &o0as "e tra)a0o/ ran"es li)ros tan r3pi"o pue"e utili(ar la memoria "isponi)le. el almacenamiento en cac&K "e la cKlula es un mecanismo 7ue permite PHPExcel para mantener los o)0etos "e cKlulas en un tama?o m3s pe7ue?o "e la memoria/ el "isco/ o en AP4/ memcac&e o Lin4ac&e/ en lu ar "e en la memoria "e PHP. Esto le permite re"ucir el uso "e memoria para los li)ros ran"es/ aun7ue a un costo "e veloci"a" para acce"er a "atos "e la cel"a. De !orma pre"etermina"a/ PHPExcel to"av:a tiene to"os los o)0etos "e cel"a "e memoria/ pero pue"e especi!icar alternativas. Para &a)ilitar el almacenamiento en cac&K "e cKlulas/ se "e)e llamar al PHPExcel'9ettin s## set4ac&e9tora eMet&o" ,+ mKto"o/ pasan"o por el mKto"o "e almacenamiento en cac&K 7ue "esea utili(ar.
$cac#e0et#o('<'PHPExcel_Cac#e(4bjectSto$age=acto$-::cac#e_in_,e,o$-; PHPExcel_Settings::setCac#eSto$age0et#o(($cac#e0et#o();

set#acheBtora3e*ethod=) "evolver3 un )ooleano true si tiene Kxito/ !also en caso "e !allo ,por e0emplo/ si tratan"o "e cac&K a AP4 en AP4 no est3 &a)ilita"o+. 5a memoria cac&K se mantiene por separa"o para ca"a &o0a "e c3lculo in"ivi"ual/ - se crea autom3ticamente cuan"o se crea una instancia "e la &o0a "e c3lculo )asa"o en el mKto"o "e almacenamiento en cac&K - la con!i uraci%n 7ue &a con!i ura"o. <ste" no pue"e cam)iar los a0ustes "e con!i uraci%n una ve( 7ue &an comen(a"o a leer un li)ro/ o &an crea"o su primera &o0a "e c3lculo. En la actuali"a"/ los mKto"os "e almacenamiento en cac&K est3n "isponi)les las si uientes. PHPExcel'4ac&e"2)0ect9tora eJactor-##cac&e'in'memor-^ El valor por "e!ecto. 9i no iniciali(ar cual7uier mKto"o "e almacenamiento en cac&K/ entonces este es el mKto"o 7ue usar3 PHPExcel. 4ell o)0ects are maintaine" in PHP memor- as at present. o)0etos "e la cKlula se mantiene en la memoria "e PHP como en la actuali"a". PHPExcel'4ac&e"2)0ect9tora eJactor-##cac&e'in'memor-'seriali(e"^ El uso "e este mKto"o "e almacenamiento en cac&K/ las cKlulas se mantienen en la memoria "e PHP como un con0unto "e o)0etos en serie/ lo 7ue re"uce la &uella "e memoria con so)recar a "e

PHPExcel Developer Documentation

14

ren"imiento m:nimo. PHPExcel'4ac&e"2)0ect9tora eJactor-##cac&e'in'memor-' (ip^ Al i ual 7ue cac&e'in'memor-'seriali(e"/ este mKto"o mantiene las cKlulas en la memoria "e PHP como un con0unto "e o)0etos en serie/ pero (ip para re"ucir el uso "e la memoria aAn m3s/ aun7ue el acceso a leer o escri)ir en una cel"a es un poco m3s lento. PHPExcel'4ac&e"2)0ect9tora eJactor-##cac&e'to'"isc.9AM^ 4uan"o se utili(a cac&e'to'"isc.9AM to"as las cKlulas se mantienen en un arc&ivo temporal en "isco/ con s%lo un :n"ice para su u)icaci%n en ese arc&ivo mantiene en la memoria "e PHP. Esto es m3s lento 7ue cual7uiera "e los mKto"os cac&e'in'memor-/ pero re"uce si ni!icativamente el consumo "e memoria. El arc&ivo "e "isco temporal se elimina autom3ticamente cuan"o el script !inali(a. PHPExcel'4ac&e"2)0ect9tora eJactor-##cac&e'to'p&p>emp^ Al i ual 7ue cac&e'to'"isc.9AM/ utili(an"o las cac&e'to'p&p>emp to"as las cKlulas se llevan a ca)o en el p&p# ; ; temp . ; 2 corriente/ con s%lo un :n"ice para su u)icaci%n mantiene en la memoria "e PHP. En PHP/ el p&p# ; ; memoria almacena contene"or "e "atos en la memoria# p&p# ; ; temp se comporta "e manera similar/ pero usa un arc&ivo temporal para almacenar los "atos cuan"o un l:mite "e memoria se alcan(a cierto. >&e "e!ault is 1 MB/ )ut -ou can c&an e t&is w&en initialisin cac&e'to'p&p>emp. El valor por "e!ecto es "e 1 MB/ pero pue"e cam)iar esto cuan"o la iniciali(aci%n cac&e'to'p&p>emp.
$cac#e0et#o('<'PHPExcel_Cac#e(4bjectSto$age=acto$-::'cac#e_to_p#p3e,p; $cac#eSettings'<'a$$a-('.',e,o$-Cac#eSi>e'.''<!'.?01. ''''''''''''''''''''''); PHPExcel_Settings::setCac#eSto$age0et#o(($cac#e0et#o(:'$cac#eSettings);

El p&p# ;; arc&ivo temporal se elimina autom3ticamente cuan"o el script !inali(a. PHPExcel'4ac&e"2)0ect9tora eJactor-##cac&e'to'apc^ 4uan"o se utili(a cac&e'to'apc/ o)0etos "e cKlulas se mantienen en un AP4 con s%lo un :n"ice mantiene en la memoria "e PHP para "eterminar 7ue la cKlula existe. Por "e!ecto/ un tiempo "e espera "e cac&K "e AP4 "e H00 se un"os se utili(a/ 7ue "e)er:a ser su!iciente para la ma-or:a "e las aplicaciones# aun7ue es posi)le cam)iar esto cuan"o la iniciali(aci%n cac&e'to'AP4.
$cac#e0et#o('<'PHPExcel_Cac#e(4bjectSto$age=acto$-::cac#e_to_APC; $cac#eSettings'<'a$$a-('.cac#e3i,e.''''''''<!'@66 ''''''''''''''''''''''); PHPExcel_Settings::setCac#eSto$age0et#o(($cac#e0et#o(:'$cac#eSettings);

4uan"o termina la secuencia "e coman"os to"as las entra"as ser3n retira"as "e AP4/ con in"epen"encia "el valor cac&e>ime/ por lo 7ue no se pue"e utili(ar para el almacenamiento persistente utili(an"o este mecanismo. PHPExcel'4ac&e"2)0ect9tora eJactor-##cac&e'to'memcac&e

PHPExcel Developer Documentation

1$

4uan"o se utili(a cac&e'to'memcac&e/ o)0etos "e cKlulas se mantienen en memcac&e 2 con s%lo un :n"ice mantiene en la memoria "e PHP para "eterminar 7ue la cKlula existe. De !orma pre"etermina"a/ PHPExcel )usca un servi"or memcac&e en local&ost en el puerto 11211. >am)iKn esta)lece un l:mite "e tiempo "e espera memcac&e "e H00 se un"os. 9i est3 e0ecutan"o memcac&e en un servi"or "i!erente o un puerto/ entonces uste" pue"e cam)iar estos valores pre"etermina"os al iniciali(ar cac&e'to'memcac&e#
$cac#e0et#o('<'PHPExcel_Cac#e(4bjectSto$age=acto$-::cac#e_to_,e,cac#e; $cac#eSettings'<'a$$a-('.,e,cac#eSe$"e$.''<!'.local#ost.: ''''''''''''''''''''''''.,e,cac#ePo$t.''''<!'AA5AA: ''''''''''''''''''''''''.cac#e3i,e.'''''''<!'@66 ''''''''''''''''''''''); PHPExcel_Settings::setCac#eSto$age0et#o(($cac#e0et#o(:'$cac#eSettings);

4uan"o termina la secuencia "e coman"os to"as las entra"as ser3n retira"as "e memcac&e/ in"epen"ientemente "el valor cac&e>ime/ por lo 7ue no se pue"e utili(ar para el almacenamiento persistente utili(an"o este mecanismo. PHPExcel'4ac&e"2)0ect9tora eJactor-##cac&e'to'wincac&e^ 4uan"o se utili(a cac&e'to'wincac&e/ o)0etos "e cKlulas se mantienen en Lin4ac&e 3 con s%lo un :n"ice mantiene en la memoria "e PHP para "eterminar 7ue la cKlula existe. or "e!ecto/ un tiempo "e espera "e cac&K Lin4ac&e "e H00 se un"os se utili(a/ 7ue "e)er:a ser su!iciente para la ma-or:a "e las aplicaciones# a pesar "e 7ue es posi)le cam)iar esta iniciali(aci%n cac&e'to'wincac&e cuan"o.
$cac#e0et#o('<'PHPExcel_Cac#e(4bjectSto$age=acto$-::cac#e_to_2incac#e; $cac#eSettings'<'a$$a-('.cac#e3i,e.''''''''<!'@66 ''''''''''''''''''''''); PHPExcel_Settings::setCac#eSto$age0et#o(($cac#e0et#o(:'$cac#eSettings);

4uan"o termina la secuencia "e coman"os to"as las entra"as ser3n retira"as "e Lin4ac&e/ in"epen"ientemente "el valor cac&e>ime/ por lo 7ue no se pue"e utili(ar para el almacenamiento persistente utili(an"o este mecanismo.

#.2.2.

(dioma ) *on iguracin regional

Al unos elementos "e locali(aci%n &an si"o inclui"os en PHPExcel. Pue"e esta)lecer una con!i uraci%n re ional al cam)iar la con!i uraci%n. Para esta)lecer la con!i uraci%n re ional "e portu uKs "e Brasil se "e)er:a utili(ar#
$locale'<'.pt_b$.; $"ali(Locale'<'PHPExcel_Settings::setLocale($locale); i&'(B$"ali(Locale)') ec#o'.Cnable'to'set'locale'to'.*$locale*/' '$e"e$ting'to'en_%sDb$'E!Fn/; +

9i los arc&ivos "e i"ioma portu uKs "e Brasil no est3n "isponi)les/ a continuaci%n/ los portu ueses se &a)ilitar3 en su lu ar# si la len ua portu uesa arc&ivos no est3n "isponi)les/ entonces el setlocale ,+ mKto"o "evolver3 un error/ - el .n lKs Americano ,es'es+ con!i uraci%n se utili(a en to"o. M3s "etalles "e las !unciones "isponi)les una ve( a la con!i uraci%n re ional se &a esta)leci"o/ inclui"a una lista "e los i"iomas - las con!i uraciones re ionales compati)les actualmente/ se encuentra en la secci%n 4.$.$ 5ocale 9ettin s !or Jormulae . 4on!i uraci%n re ional para los prepara"os .

PHPExcel Developer Documentation

1H

#.3.

Eliminacin de un li+ro de la memoria

El o)0eto PHPExcel contiene re!erencias c:clicas ,por e0emplo/ el li)ro est3 relaciona"a con las &o0as "e c3lculo - las &o0as "e tra)a0o est3n vincula"os a su li)ro "e los pa"res+/ 7ue causa pro)lemas cuan"o PHP intenta )orrar los o)0etos "e la memoria cuan"o se unset ,+/ o al !inal "e una !unci%n cuan"o est3n en el 3m)ito local. El resulta"o "e esto es =pKr"i"as "e memoria=/ 7ue !3cilmente se pue"e utili(ar una ran canti"a" limita"a "e memoria "e PHP. Esto s%lo se pue"e resolver "e !orma manual# si es necesario "esarmar un li)ro/ entonces tam)iKn &a- 7ue =romper= estas re!erencias c:clicas antes "e &acerlo. PHPExcel provi"es t&e "isconnectLorCs&eets,+ met&o" !or t&is purpose. PHPExcel proporciona la "isconnectLorCs&eets ,+ para este prop%sito.
$objPHPExcel !(isconnectGo$Hs#eets(); %nset($objPHPExcel);

!.!.

#or$sheets

<na &o0a "e c3lculo es una colecci%n "e cel"as/ !%rmula/ im3 enes/ r3!icos/ ... >iene to"os los "atos 7ue "esea representar como una &o0a "e c3lculo &o0a "e c3lculo.

!.%.

&ccessin' cells

Acceso a las cKlulas en una &o0a "e c3lculo PHPExcel "e)er:a ser )astante sencillo. Este tema se enumeran al unas "e las opciones para acce"er a una cel"a.

#.!.1.

El esta+lecimiento de un valor de la celda por coordenada

El esta)lecimiento "e un valor "e la cel"a por coor"ena"as se pue"e &acer utili(an"o los setCellVal%e mKto"o "e la &o0a "e c3lculo.
$objPHPExcel !getActi"eS#eet() !setCellVal%e(.1?.:'.So,e'"al%e.);

#.!.2.

Recuperacin de una celda de coordenadas

Para recuperar el valor "e una cel"a/ la primera cel"a "e)e ser recupera"a "e la &o0a "e c3lculo utili(an"o el mKto"o getCell* El valor "e una cel"a se pue"e leer "e nuevo con la si uiente l:nea "e c%"i o#
$objPHPExcel !getActi"eS#eet() !getCell(.1?.) !getVal%e();

9i uste" necesita el valor calcula"o "e una cel"a/ utilice el si uiente c%"i o. Esto se explica en 4.4.3$ .
$objPHPExcel !getActi"eS#eet() !getCell(.1?.) !getCalc%late(Val%e();

#.!.3.

El esta+lecimiento de un valor de celda de la columna y la ila

El esta)lecimiento "e un valor "e la cel"a por coor"ena"as se pue"e &acer uso "e &o0a "e c3lculo "e setCellVal%e1-Col%,nAn(Ro2 mKto"o.
EE'Set'cell'1? $objPHPExcel !getActi"eS#eet() !setCellVal%e1-Col%,nAn(Ro2(A:'?:'.So,e'"al%e.);

PHPExcel Developer Documentation

17

#.!.#.

Recuperacin de una celda por columna y ila

Para recuperar el valor "e una cel"a/ la primera cel"a "e)e ser recupera"a "e la &o0a "e c3lculo utili(an"o el mKto"o getCell1-Col%,nAn(Ro2* El valor "e una cel"a se pue"e leer "e nuevo con la si uiente l:nea "e c%"i o# EE'4btene$'la'cel(a'1?
$objPHPExcel !getActi"eS#eet() !getCell1-Col%,nAn(Ro2(A:'?) !getVal%e();

9i uste" necesita el valor calcula"o "e una cel"a/ utilice el si uiente c%"i o. Esto se explica en 4.4.3$ EE'4btene$'la'cel(a'1?
$objPHPExcel !getActi"eS#eet() !getCell1-Col%,nAn(Ro2(A:'?) !getCalc%late(Val%e();

?.@.@.

Loopin, celdas

Loopin, c2ldas utili5ando iteradores

5a manera m3s !3cil a las cKlulas "el la(o es el uso "e itera"ores. <so "e itera"ores/ uno pue"e usar !oreac& para &o0as "e c3lculo "e )ucle/ !ilas - cel"as.

A /0123145/361 78 94872:5 41 8;89<=0 >01>8 78 =88 20>07 =07 ?5=0:87 >8 415 @0;5 >8 /A=/4=0 B =07 94872:5 81 415 25C=5.
DIp#p $objRea(e$'<'PHPExcel_I4=acto$-::c$eateRea(e$(.Excel5667.); $objRea(e$ !setRea(9ata4nl-(t$%e); $objPHPExcel'<'$objRea(e$ !loa((/test*xlsx/); $objGo$Hs#eet'<'$objPHPExcel !getActi"eS#eet(); ec#o'.Dtable!.'*'/Fn/; &o$eac#'($objGo$Hs#eet !getRo2Ite$ato$()'as'$$o2)') ''ec#o'.Dt$!.'*'/Fn/; ''$cellIte$ato$'<'$$o2 !getCellIte$ato$(); ''$cellIte$ato$ !setIte$ate4nl-ExistingCells(&alse);'EE'Este'la>os'(e'to(as'las' cJl%las:'

'''''''''''''''''''''''''''''''''''''''''''''EE'A%nK%e'no'estL'estableci(a*' ''''''''''''''''''''''''''''''''''''''''''''EE'9e'&o$,a'p$e(ete$,ina(a:' sMlo'las'cJl%las' '''''''''''''''''''''''''''''''''''''''''''EE'N%e'estLn'a'%no'se' '''''''''''''''''''''''''''''''''''''''''''EE'Ite$a*


''&o$eac#'($cellIte$ato$'as'$cell)') ''''ec#o'.Dt(!.'*'$cell !getVal%e()'*'.DEt(!.'*'/Fn/; ''+ '' ''ec#o'.DEt$!.'*'/Fn/; + ec#o'.DEtable!.'*'/Fn/; I!

>en a en cuenta 7ue nos &emos !i0a"o cKlula itera"or setIte$ate4nl-ExistingCells "el () en !alse. Esto &ace 7ue el )ucle itera"or to"as las cKlulas/ aun7ue no se esta)lecieron antes.

PHPExcel Developer Documentation

1G

El repetidor celda devolver null co&o la celda si no se esta-lece en la hoHa de c5lculo$ Marco cKlula itera"or setIte$ate4nl-ExistingCells la () para )ucle &alsas to"as las cel"as "e la &o0a "e c3lculo 7ue pue"e estar "isponi)le en ese momento. Esto crear3 nuevas cKlulas si el aumento "e uso "e memoria - necesarioQ 9%lo se "e)e usar si est3 "estina"o a to"as las cKlulas "el la(o 7ue eventualmente "isponi)les.

Aucle de c2lulas por medio de 6ndices


9e pue"e utili(ar la posi)ili"a" "e acce"er a los valores "e cel"a - la !ila "e :n"ice "e columna como ,0/1+ en lu ar "e MA1M para leer - escri)ir valores "e las cel"as en )ucles.

@ota# En el :n"ice "e la columna PHPExcel est3 )asa"o en 0/ mientras 7ue :n"ice "e la !ila es "e )ase 1. >&at means MA1M _ ,0/1+ Eso si ni!ica MA1M _ ,0/1+ A continuaci%n se muestra un e0emplo "on"e se lee to"os los valores "e una &o0a "e c3lculo - los muestra en una ta)la.
DIp#p $objRea(e$'<'PHPExcel_I4=acto$-::c$eateRea(e$(.Excel5667.); $objRea(e$ !setRea(9ata4nl-(t$%e); $objPHPExcel'<'$objRea(e$ !loa((/test*xlsx/); $objGo$Hs#eet'<'$objPHPExcel !getActi"eS#eet(); $#ig#estRo2'<'$objGo$Hs#eet !getHig#estRo2();'EE'eje,plo'A6 $#ig#estCol%,n'<'$objGo$Hs#eet !getHig#estCol%,n();'EE'eje,plo'.=. $#ig#estCol%,nIn(ex'<'PHPExcel_Cell::col%,nIn(ex=$o,St$ing($#ig#estCol%,n);'eje,plo' O ec#o'.Dtable!.'*'/Fn/; &o$'($$o2'<'A;'$$o2'D<'$#ig#estRo2;'PP$$o2)') ''ec#o'.Dt$!.'*'/Fn/; ''&o$'($col'<'6;'$col'D<'$#ig#estCol%,nIn(ex;'PP$col)') ''''ec#o'.Dt(!.'*'$objGo$Hs#eet !getCell1-Col%,nAn(Ro2($col:'$$o2) !getVal%e()'*' .DEt(!.'*'/Fn/; ''+ ''ec#o'.DEt$!.'*'/Fn/; + ec#o'.DEtable!.'*'/Fn/; I!

#.!.,.

-so de carpetas valor para acilitar la entrada de datos

.nternamente/ PHPExcel PHPExcel_Cell_IVal%e1in(e$ utili(a una implementaci%n por "e!ecto (PHPExcel_Cell_9e&a%ltVal%e1in(e$) para "eterminar los tipos "e "atos "e los "atos intro"uci"os me"iante una cKlula setVal%e'() mKto"o. 2pcionalmente/ el comportamiento pre"etermina"o "e PHPExcel pue"e ser mo"i!ica"o/ lo 7ue !acilita la entra"a "e "atos. Por e0emplo/ una clase PHPExcel_Cell_A("ance(Val%e1in(e$' est3 presente. 4onvierte autom3ticamente los porcenta0es - las !ec&as "e entra"a como ca"enas con el !ormato correcto/ tam)iKn esta)lecer el estilo "e la in!ormaci%n "e la cKlula. En el e0emplo si uiente se muestra c%mo esta)lecer la carpeta "e valor en PHPExcel#
EQQ'PHPExcel'QE $eK%i$e_once'.PHPExcel*p#p.;

PHPExcel Developer Documentation

1D

EQQ'PHPExcel_Cell_A("ance(Val%e1in(e$'QE $eK%i$e_once'.PHPExcelECellEA("ance(Val%e1in(e$*p#p.; EQQ'PHPExcel_I4=acto$-'QE $eK%i$e_once'.PHPExcelEI4=acto$-*p#p.;

EE'Establece$'la'ca$peta'(e'"alo$PHPExcel_Cell::setVal%e1in(e$('ne2'
PHPExcel_Cell_A("ance(Val%e1in(e$()');

EE'C$ea$'%n'n%e"o'objeto'PHPExcel
$objPHPExcel'<'ne2'PHPExcel(); EE'***

EE'Ag$ega$'alg%nos'(atos:'ase,ejLn(ose'a'alg%nos'tipos'(e'(atos'(i&e$entes
$objPHPExcel !getActi"eS#eet() !setCellVal%e(.AR.:'.Pe$centage'"al%e:.); $objPHPExcel !getActi"eS#eet() !setCellVal%e(.1R.:'.A6S.);

EE'Con"ie$te'a'6:A'-'conj%ntos'(e'estilo'(e'cel(a'po$centaje

$objPHPExcel !getActi"eS#eet() !setCellVal%e(.AO.:'.9ateEti,e'"al%e:.); $objPHPExcel !getActi"eS#eet() !setCellVal%e(.1O.:'.5A'9ece,be$'AT?U.);

EE'Con"ie$te'a'la'&ec#a'-'establece'el'&o$,ato'(e'&ec#a'estilo'(e'cel(a

+a creaci'n de su propio %alor a3lutinante es (5cil$

Al enla(ar avan(a"a valor es necesario/ pue"e implementar la inter!a( PHPExcel_Cell_IVal%e1in(e$ o ampliar las clases o PHPExcel_Cell_A("ance(Val%e1in(e$'PHPExcel'4ell'De!ault8alueBin"er.

#.,.

P$PE%cel recetas

5as si uientes p3 inas le o!recemos al unas recetas utili(an PHPExcelBampliamente. >en a en cuenta 7ue estos no o!recen una "ocumentaci%n completa so)re "etermina"os PHPExcel !unciones "e la AP./ pero s%lo un olpe para empe(ar. 9i necesita las !unciones espec:!icas "e la AP./ consulte la "ocumentaci%n "e la AP.. Por e0emplo/ 4.4.7 9ettin a worCs&eetMs pa e orientation an" si(e covers settin a pa e orientation to A4. Marco "e orientaci%n "e la p3 ina - el tama?o "e una &o0a "e c3lculo a)arca esta)lecer una orientaci%n "e p3 ina A4. 2tros !ormatos "e papel/ como 4arta EE.<<./ no est3n cu)iertos en este "ocumento/ pero en la "ocumentaci%n "e la AP. PHPExcel.

#.,.1.

.arco de ho/a de clculo de los metadatos de un

PHPExcel permite una manera !3cil "e con!i urar una &o0a "e c3lculo "e meta"atos/ utili(an"o la propie"a" "e acceso "e "ocumento. meta"atos "e &o0a "e c3lculo pue"e ser Atil para encontrar un "ocumento espec:!ico en un repositorio "e arc&ivos o un sistema "e esti%n "e "ocumentos. Por e0emplo/ Microso!t 9&arepoint utili(a los meta"atos "el "ocumento para )uscar un "ocumento espec:!ico en el "ocumento sus listas. &o0a "e c3lculo "e meta"atos Marco se &ace "e la si uiente manera#
$objPHPExcel !getP$ope$ties() !setC$eato$(/0aa$ten'1allia%2/); $objPHPExcel !getP$ope$ties() !setLast0o(i&ie(1-(/0aa$ten'1allia%2/); $objPHPExcel !getP$ope$ties() !set3itle(/4&&ice'5667'8LS8'3est'9oc%,ent/); $objPHPExcel !getP$ope$ties() !setS%bject(/4&&ice'5667'8LS8'3est'9oc%,ent/); $objPHPExcel !getP$ope$ties() !set9esc$iption(/3est'(oc%,ent'&o$'4&&ice'5667'8LS8:' gene$ate('%sing'PHP'classes*/); $objPHPExcel !getP$ope$ties() !set;e-2o$(s(/o&&ice'5667'openx,l'p#p/); $objPHPExcel !getP$ope$ties() !setCatego$-(/3est'$es%lt'&ile/);

PHPExcel Developer Documentation

20

#.,.2.

.arco activa de ho/a de una ho/a de clculo

5a si uiente l:nea "e c%"i o esta)lece el :n"ice "e &o0a activa a la primera &o0a#
$objPHPExcel !setActi"eS#eetIn(ex(6);

#.,.3.

Escri+e una echa en una celda

En Excel/ las !ec&as se almacenan como valores numKricos contan"o el nAmero "e ":as transcurri"os "es"e el 1;1;1D00. Por e0emplo/ la !ec&a M200GB12B31 Mse representa como 3DG13. <ste" pue"e veri!icar esto en Microso!t 2!!ice Excel me"iante la intro"ucci%n "e esa !ec&a en una cel"a "espuKs cam)iar el !ormato "e nAmero a =]eneral= por lo 7ue el valor numKrico ver"a" se revela. Escri)ir un valor "e !ec&a en una cel"a se compone "e "os l:neas "e c%"i o. 9eleccione el mKto"o 7ue m3s le conven a me0or. He a7u: al unos e0emplos# EQ'PHPExcel_Cell_A("anceVal%e1in(e$'necesa$ios'pa$a'esta',%est$a'QE'
$eK%i$e_once'.PHPExcelECellEA("ance(Val%e1in(e$*p#p.;

EE Co,o'la'&ec#a'-'#o$a'0-SNL'.566? A5 UA'.
PHPExcel_Cell::setVal%e1in(e$('ne2'PHPExcel_Cell_A("ance(Val%e1in(e$()'); $objPHPExcel !getActi"eS#eet() !setCellVal%e(.9A.:'.566? A5 UA.) $objPHPExcel !getActi"eS#eet() !getSt-le(.9A.) !getV%,be$=o$,at() !set=o$,atCo(e(PHPExcel_St-le_V%,be$=o$,at::=4R0A3_9A3E_WWWW0099SLASH)

EE'PHP tie,po'(tie,po'Cnix)
$ti,e'<'g,,Hti,e(6:6:6:A5:UA:566?);'EE'int(A5U6@?A@66) $objPHPExcel !getActi"eS#eet() !setCellVal%e(.9A.:' PHPExcel_S#a$e(_9ate::PHP3oExcel($ti,e)) $objPHPExcel !getActi"eS#eet() !getSt-le(.9A.) !getV%,be$=o$,at() !set=o$,atCo(e(PHPExcel_St-le_V%,be$=o$,at::=4R0A3_9A3E_WWWW0099SLASH)

EE'Excel'en'tie,po
$objPHPExcel !getActi"eS#eet() !setCellVal%e(.9A.:'UT?AU) $objPHPExcel !getActi"eS#eet() !getSt-le(.9A.) !getV%,be$=o$,at() !set=o$,atCo(e(PHPExcel_St-le_V%,be$=o$,at::=4R0A3_9A3E_WWWW0099SLASH)

5os mKto"os anteriores para intro"ucir una !ec&a/ to"os "an el mismo resulta"o. PHPExcel'9t-le'@um)erJormat proporciona una ran canti"a" "e !ormatos "e !ec&a "e!ini"aBpre. Iotas: 1. 8ea la secci%n =<so "e carpetas "e valor para !acilitar la entra"a "e "atos= para o)tener m3s in!ormaci%n acerca "e la A"vance"8alueBin"er utili(a"os en el primer e0emplo. 2. En versiones anteriores "e PHPExcel &asta e inclu-en"o 1.H.H/ cuan"o una cKlula ten:a un !ormato "e nAmero "e c%"i o como la !ec&a/ era posi)le intro"ucir una !ec&a "irectamente a travKs "e un nAmero entero "e PHP en tiempo sin tener 7ue convertirlos a !ormato "e !ec&a "e Excel. 9tartin wit& PHPExcel 1.H.7 t&is is no lon er supporte". A partir "e PHPExcel 1.H.7 esta -a no se a"mite. 3. Excel tam)iKn pue"e !uncionar en una )asa"a en el calen"ario 1D04 ,por "e!ecto para li)ros uar"a"os en Mac+. @ormalmente/ uste" no tiene 7ue preocuparse por esto cuan"o se utili(a PHPExcel.

PHPExcel Developer Documentation

21

#.,.#.

Escri+ir una rmula en una celda

Dentro "el arc&ivo "e Excel/ las !%rmulas siempre se almacenan como aparecer:an en una versi%n en .n lKs "e Microso!t 2!!ice Excel/ - PHPExcel mane0a to"as las !%rmulas internamente en este !ormato. Esto si ni!ica 7ue las si uientes re las espera#

separa"or "ecimal es M.M ,perio"+ ,Per:o"o+ Junction ar ument separator is M/M ,comma+ ar umento "e separaci%n "e !unciones es =/=
,coma+

Matrix row separator is M^M ,semicolon+ !ila separa"or "e Matrix es =/= ,coma+ En lis& !unction names must )e use" !unci%n "e los nom)res "e .n lKs "e)e ser utili(a"o

Esto es in"epen"ientemente "e la versi%n "e i"ioma "e Microso!t 2!!ice Excel pue"e &a)er si"o utili(a"o para crear el arc&ivo "e Excel. Al !inal "el li)ro se a)re por el usuario/ Microso!t 2!!ice Excel se encar ar3 "e mostrar la !%rmula se An la len ua aplicaciones. >ranslation is taCen care o! )- t&e applicationQ 5a tra"ucci%n es a car o "e la aplicaci%nQ 5a si uiente l:nea "e c%"i o escri)e la !%rmula =F 9. ,44` $00/= lucro =/= pKr"i"a =+= en la cel"a BG.. >en a en cuenta 7ue la !%rmula "e)e comen(ar con =F= para &acer PHPExcel reconocer esto como una !%rmula.
$objPHPExcel !getActi"eS#eet() !setCellVal%e(.1?.:.<I=(CR!O66:/p$o&it/:/loss/).);

"e cKlulas "e la !%rmula A se pue"e leer "e nuevo con la si uiente l:nea "e c%"i o#
$&o$,%la'<'$objPHPExcel !getActi"eS#eet() !getCell(.1?.) !getVal%e();

9i uste" necesita el valor calcula"o "e una cel"a/ utilice el si uiente c%"i o. Esto se explica en 4.4.3$ .
$"al%e'<'$objPHPExcel !getActi"eS#eet() !getCell(.1?.) !getCalc%late(Val%e();

#.,.!.

*on iguracin regional para los preparados en

Al unos elementos "e locali(aci%n &an si"o inclui"os en PHPExcel. Pue"e esta)lecer una con!i uraci%n re ional al cam)iar la con!i uraci%n. Para esta)lecer la con!i uraci%n re ional "e Ousia "e)e utili(ar#
$locale'<'.$%.; $"ali(Locale'<'PHPExcel_Settings::setLocale($locale); i&'(B$"ali(Locale)') ec#o'.Cnable'to'set'locale'to'.*$locale*/' '$e"e$ting'to'en_%sDb$'E!Fn/; +

9i el i"ioma "e los arc&ivos rusos no est3n "isponi)les/ el setlocale ,+ mKto"o "evolver3 un error/ la con!i uraci%n "e .n lKs se utili(ar3 en to"as partes. <na ve( 7ue &a-a esta)leci"o una con!i uraci%n re ional/ pue"e tra"ucir una !%rmula "e su interior .n lKs co"i!icaci%n.
$&o$,%la'<'$objPHPExcel !getActi"eS#eet() !getCell(.1?.) !getVal%e(); $t$anslate(=o$,%la'<' PHPExcel_Calc%lation::getInstance() !_t$anslate=o$,%la3oLocale($&o$,%la);

PHPExcel Developer Documentation

22

>am)iKn pue"e crear una !%rmula 7ue utili(a los nom)res "e !unci%n - separa"ores "e ar umentos apropia"os para la con!i uraci%n re ional "e!ini"a/ - lue o tra"ucirlo al .n lKs antes "e esta)lecer el valor "e la cel"a#
$&o$,%la'<'.<XYZ[U@6(X\]\(56A6;5;O);X\]\(56A6;A5;UA);^_]^Y\).; $inte$nal=o$,%la'<' PHPExcel_Calc%lation::getInstance() !t$anslate=o$,%la3oEnglis#($&o$,%la); $objPHPExcel !getActi"eS#eet() !setCellVal%e(.1?.:$inte$nal=o$,%la);

En la actuali"a"/ la tra"ucci%n s%lo tra"uce la !%rmula nom)res "e las !unciones/ las constantes >O<E - JA59E/ - los separa"ores ar umento "e la !unci%n. En la actuali"a"/ la con!i uraci%n re ional se a"miten los si uientes# +an3ua3e 4(ec& Danis& ]erman 9panis& Jinnis& Jrenc& Hun arian .talian Dutc& @orwe ian Polis& Portu uese Bra(ilian Portu uese Oussian 9we"is& aebtina DansC Deutsc& Espa?ol 9uomi Jrancais Ma -ar .taliano @e"erlan"s @orsC Pd(-C polsCi Portu ues Portu ues Brasileiro Xfggh[i \jkh 9vensCa +ocale #ode 4s Da De Es Ji Jr Hu .t @l @o Pl pt pt')r ru 9v

#.,.,.

Escri+a un carcter de nueva l0nea 12 n1 en una celda 34lt 5 Enter6

En Microso!t 2!!ice Excel 7ue conse uir un salto "e l:nea en una cel"a pulsan"o AL3'P'=Enter=. 4uan"o se &ace esto/ autom3ticamente se convierte en =a0ustar el texto= para la cKlula. A7u: es c%mo lo rar esto en PHPExcel#
$objPHPExcel !getActi"eS#eet() !getCell(.AA.) !setVal%e(/#elloFn2o$l(/); $objPHPExcel !getActi"eS#eet() !getSt-le(.AA.) !getAlign,ent() !setG$ap3ext(t$%e);

:ip

5ea m3s so)re el !ormato "e cel"as utili(an"o getSt-le'() en otro lu ar.
:ip A("ance(Val%ebin(e$*p#p se encien"e autom3ticamente =a0ustar el texto= "e la cel"a cuan"o se ve un car3cter "e nueva l:nea en una ca"ena 7ue va a insertar en una cel"a. Pust liCe Microso!t 2!!ice Excel. Al i ual 7ue Microso!t 2!!ice Excel. Prue)a esto# $eK%i$e_once'.PHPExcelECellEA("ance(Val%e1in(e$*p#p.; PHPExcel_Cell::setVal%e1in(e$('ne2'PHPExcel_Cell_A("ance(Val%e1in(e$()'); $objPHPExcel !getActi"eS#eet() !getCell(.AA.) !setVal%e(/#elloFn2o$l(/); Oea" more a)out A("ance(Val%e1in(e$*p#p elsew&ere.

PHPExcel Developer Documentation

23

?.B.+.

Esta$le5ca expl6citamente tipo de datos de una celda

Pue"e con!i urar tipo "e "atos "e una cel"a expl:citamente me"iante el mKto"o set8alueExplicit "e la cKlula/ o el mKto"o set4ell8alueExplicit "e una &o0a "e c3lculo. He a7u: un e0emplo# "e las @aciones <ni"as#
$objPHPExcel !getActi"eS#eet() !getCell(.AA.) !setVal%eExplicit(.5O.:' PHPExcel_Cell_9ata3-pe::3WPE_VC0ERIC);

?.B.C.

Cam$iar una celda en una direccin D9L !acer clic en

<ste" pue"e &acer 7ue una cKlula pue"e &acer clic en una "irecci%n <O5 me"iante el esta)lecimiento "e su propie"a" &iperv:nculo#
$objPHPExcel !getActi"eS#eet() !setCellVal%e(.E5@.:'.222*p#pexcel*net.); $objPHPExcel !getActi"eS#eet() !getCell(.E5@.) !getH-pe$linH() !setC$l(.#ttp:EE222*p#pexcel*net.);

S3 4728> >8785 @5/8: 41 @3<8:?D1/4=0 5 02:5 @0;5 >8 /A=/4=0 0 =5 /8=>5. 423=3/8 8= 73E438128 /6>3E0F
$objPHPExcel !getActi"eS#eet() !setCellVal%e(.E5@.:'.222*p#pexcel*net.); $objPHPExcel !getActi"eS#eet() !getCell(.E5@.) !getH-pe$linH() !setC$l(`s#eet:EE.S#eetna,e.BAAa);

?.B.E.

Marco orientacin de la p7,ina una !o&a de c7lculo # el tama1o

Marco orientaci%n "e la p3 ina una &o0a "e c3lculo - el tama?o se pue"e &acer utili(an"o las si uientes l:neas "e c%"i o#
$objPHPExcel !getActi"eS#eet() !getPageSet%p() !set4$ientation(PHPExcel_Go$Hs#eet_PageSet%p::4RIEV3A3I4V_LAV9SCAPE); $objPHPExcel !getActi"eS#eet() !getPageSet%p() !setPape$Si>e(PHPExcel_Go$Hs#eet_PageSet%p::PAPERSIZE_AR);

>en a en cuenta 7ue existen opciones a"icionales "e p3 inas "isponi)les. Por !avor/ consulte la "ocumentaci%n "e la AP. para to"as las opciones posi)les.

?.B.1*.

Con%i,urar p7,ina0 Escala de opciones

5as opciones "e con!i uraci%n "e p3 ina "e escala en PHPExcel se relacionan "irectamente con las opciones "e escala en la secci%n =4on!i urar p3 ina= "e "i3lo o como se muestra en la ilustraci%n. 5os valores por "e!ecto en PHPExcel correspon"en a valores por "e!ecto "e M9 2!!ice Excel/ como se muestra en la ilustraci%n

PHPExcel Developer Documentation

24

,et#o( set=it3oPage(***) setScale(***) set=it3oGi(t#(***) set=it3oHeig#t(***)

initial'"al%e &alse A66 A A

calling',et#o('2ill' t$igge$ set=it3oPage(&alse) set=it3oPage(t$%e) set=it3oPage(t$%e)

Vote

"al%e'6',eans' (o not &it to 2i(t# "al%e'6',eans' (o not &it to #eig#t

E&emplo
As: es como para aHustarse a una p53ina de ancho por altura in(inita p53inas:
$objPHPExcel !getActi"eS#eet() !getPageSet%p() !set=it3oGi(t#(A); $objPHPExcel !getActi"eS#eet() !getPageSet%p() !set=it3oHeig#t(6);

4omo pue"e ver/ no es necesario llamar a set=it3oPage'("e$(a(e$o) "es"e set=it3oGi(t#' (***) - set=it3oHeig#t'(***) provoca esto.

9i utili(a set=it3oGi(t#'() "e)e/ en eneral/ tam)iKn se especi!ica set=it3oHeig#t' ()'(e'&o$,a expl:cita como en el e0emplo. >en a cui"a"o "e con!iar en los valores iniciales. Esto es especialmente cierto si uste" est3 actuali(an"o "es"e PHPExcel 1.7.0 a 1.7.1/ "on"e los valores pre"etermina"os para el a0uste a la altura - el a0uste "e anc&oBa cam)ia"o "e 0 a 1.

#.,.11.

Pgina de mrgenes

Para esta)lecer los m3r enes "e p3 ina "e una &o0a "e c3lculo/ utilice el c%"i o#

PHPExcel Developer Documentation

2$

$objPHPExcel $objPHPExcel $objPHPExcel $objPHPExcel

!getActi"eS#eet() !getActi"eS#eet() !getActi"eS#eet() !getActi"eS#eet()

!getPage0a$gins() !getPage0a$gins() !getPage0a$gins() !getPage0a$gins()

!set3op(A); !setRig#t(6*7O); !setLe&t(6*7O); !set1otto,(A);

>en a en cuenta 7ue los valores "e los m3r enes se especi!ican en pul a"as.

#.,.12.

*entro de una pgina hori7ontal ) vertical

Para centrar una p3 ina &ori(ontal ; vertical/ pue"e utili(ar el c%"i o si uiente#
$objPHPExcel !getActi"eS#eet() !getPageSet%p() !setHo$i>ontalCente$e((t$%e); $objPHPExcel !getActi"eS#eet() !getPageSet%p() !setVe$ticalCente$e((&alse);

#.,.13. 4/uste de la ca+ecera y pie de pgina de impresin de una ho/a de clculo


Marco &o0a "e impresi%n "e un enca)e(a"o - pie "e p3 ina se pue"e &acer utili(an"o las si uientes l:neas "e c%"i o#
$objPHPExcel !getActi"eS#eet() !getHea(e$=oote$() !set4((Hea(e$(.bCbHPlease't$eat' t#is'(oc%,ent'as'con&i(entialB.); $objPHPExcel !getActi"eS#eet() !getHea(e$=oote$() !set4((=oote$(.bLb1.'*' $objPHPExcel !getP$ope$ties() !get3itle()'*'.bRPage'bP'o&'bV.);

9ustituci%n - c%"i os "e !ormato ,a partir "e -+ se pue"e utili(ar "entro "e los enca)e(a"os - pies "e p3 ina. @o &a- un or"en necesario en el 7ue estos c%"i os "e)en aparecer.

5a primera aparici%n "e los si uientes c%"i os convierte el !ormato 2@/ la se un"a aparici%n convierte 2JJ "e nuevo# 9triCet&rou & >ac&a"o 9uperscript 9o)rescrito 9u)script 9u):n"ice

PHPExcel Developer Documentation

2H

9uper:n"ice - su):n"ice no pue"e ser am)as 2@ al mismo tiempo. 5o 7ue ocurra primero ana - el otro se pasa por alto/ mientras 7ue el primero est3 en 2@. 5os c%"i os si uientes son compati)les con excel2007#
&L

&P &N &font size &K

4%"i o "e la =secci%n "e la i(7uier"a= ,&a- tres "e ca)ecera locali"a"es "e pie "e p3 ina/ la =i(7uier"a=/ =centro=/ - ="erec&a=+. 4uan"o "os o m3s apariciones "e este marca"or "e secci%n existen/ el conteni"o "e to"os los marca"ores se concatenan/ en el or"en "e aparici%n/ - se coloca en la parte i(7uier"a. 4%"i o "e la =p3 ina actual l= 4%"i o "e =p3 inas totales= 4%"i o para =el tama?o "e !uente "e texto=/ "on"e el tama?o "e la !uente es un tama?o "e !uente en puntos. 4%"i o "e =color "e la !uente "e texto= J J O]B color se especi!ica como OO]]BB >ema "e color es speci!e" como >>9@@ "on"e >> es el ." color "el tema/ 9 es =m= o =B= "el ; valor som)ra tinte/ @@ es el tono ; valor som)ra.

&S &X &Y &C

&D &T &G

4%"i o para =tac&a"o "e texto= on ; o!! 4%"i o para =super script "e texto= on ; o!! 4o"e !or =text su)script= on ; o!! 4%"i o para =el texto en su):n"ice= on ; o!! 4%"i o "e la =secci%n central=. 4uan"o "os o m3s apariciones "e este marca"or "e secci%n existen/ el conteni"o "e to"os los marca"ores se concatenan/ en el or"en "e aparici%n/ - se coloca en la secci%n central. 4%"i o para la =!ec&a= 4%"i o para el =tiempo= 4%"i o para la =ima en "e !on"o= Por !avor/ ase Arese "e a re ar la ima en a la ca)ecera ; pie "e p3 ina#
$obj9$a2ing'<'ne2' PHPExcel_Go$Hs#eet_Hea(e$=oote$9$a2ing(); $obj9$a2ing !setVa,e(.PHPExcel'logo.); $obj9$a2ing !setPat#(.*Ei,agesEp#pexcel_logo*gi&.); $obj9$a2ing !setHeig#t(U@); $objPHPExcel !getActi"eS#eet() !getHea(e$=oote$() !a((I,age($obj9$a2ing:' PHPExcel_Go$Hs#eet_Hea(e$=oote$::I0AcE_HEA9ER_LE=3);

&U &E &R

&Z &F & &! &"

4%"i o "e =solo texto su)ra-a"o= 4%"i o "e la ="o)le su)ra-a"o= 4%"i o "e la =secci%n "e la "erec&a=. 4uan"o "os o m3s apariciones "e este marca"or "e secci%n existen/ el conteni"o "e to"os los marca"ores se concatenan/ en el or"en "e aparici%n/ - se coloca en la secci%n "erec&a. 4%"i o para =la ruta "el arc&ivo "e este li)ro= 4%"i o para =nom)re "e arc&ivo "e este li)ro= 4%"i o "e la =!ic&a nom)re "e la &o0a= 4%"i o para a re ar a la p3 ina l 4%"i o "e restar "e la p3 ina l

PHPExcel Developer Documentation

27

&#font n$%e&font t'(e#

&#"&)old# &) &#"&Re*+l$r# &#"&,t$li-# &, &#"&)old ,t$li-# &. &/

4%"i o para =nom)re "e la !uente "e texto= - =!uente "e texto tipo=/ en nom)re "e la !uente - el tipo "e !uente son ca"enas 7ue especi!ica el nom)re - el tipo "e la !uente/ separa"os por una coma. 4uan"o aparece un ui%n en el nom)re "e la !uente/ 7ue si ni!ica =no especi!ica"o=. Am)os nom)re "e la !uente - el tipo "e !uente pue"e ser valores locali(a"os. 4%"i o para la =ne rita= 4%"i o para la =ne rita= 4%"i o "e =estilo "e !uente re ular= 4%"i o "e =estilo "e !uente cursiva= 4%"i o "e =estilo "e !uente cursiva= 4%"i o para =cursiva ne rita= 4%"i o "e =estilo "e es7uema= 4%"i o "e =estilo "e som)ra=

:ip

5a ta)la "e arri)a "e los c%"i os pue"e parecer a)ruma"ora primera ve( 7ue est3 tratan"o "e encontrar la manera "e escri)ir al unas "e ca)ecera o pie "e p3 ina. A!ortuna"amente/ &a- una manera m3s !3cilDe0e 7ue Microso!t 2!!ice Excel &acer el tra)a0o por uste".

Por e0emplo/ cree en Microso!t 2!!ice Excel un arc&ivo xlsx "on"e se inserta el enca)e(a"o - pie "e p3 ina como "esee usan"o los pro ramas "e la propia inter!a(. 9ave !ile as test*xlsx . ]uar"ar arc&ivo como test*xlsx* @ow/ taCe t&at !ile an" rea" o!! t&e values usin PHPExcel as !ollows# A&ora/ toma el arc&ivo - leer los valores utili(an"o PHPExcel "e la si uiente manera#
$objPHPexcel'<'PHPExcel_I4=acto$-::loa((.test*xlsx.); $objGo$Hs#eet'<'$objPHPexcel !getActi"eS#eet(); "a$_(%,p($objGo$Hs#eet !getHea(e$=oote$() !get4((=oote$()); "a$_(%,p($objGo$Hs#eet !getHea(e$=oote$() !getE"en=oote$()); "a$_(%,p($objGo$Hs#eet !getHea(e$=oote$() !get4((Hea(e$()); var'"ump,no)0LorCs&eetB` etHea"erJooter,+B` etEvenHea"er,++^ oue revela los c%"i os para la par ; impar enca)e(a"o - pie "e p3 ina. 5os usuarios experimenta"os pue"en encontrar m3s !3cil cam)iar el nom)re "e test*xlsx a test*>ip: "escomprimirlo/ e inspeccionar "irectamente el conteni"o "e la xl pertinentes E'#ojas'E's#eet8*x,l para encontrar los c%"i os "e enca)e(a"o - pie "e p3 ina.

#.,.1#.

.arco rompe la impresin en una ila o columna

Para esta)lecer un "escanso "e impresi%n/ utilice el si uiente c%"i o/ 7ue esta)lece un "escanso "e !ila en !ila 10.
$objPHPExcel !getActi"eS#eet() !set1$eaH('.AA6.':'PHPExcel_Go$Hs#eet::1REA;_R4G');

5a si uiente l:nea "e c%"i o esta)lece un "escanso "e impresi%n en la columna D#


$objPHPExcel !getActi"eS#eet() !set1$eaH('.9A6.':' PHPExcel_Go$Hs#eet::1REA;_C4LC0V');

#.,.1!.

.ostrar u ocultar l0neas de divisin de impresin cuando

Para mostrar ; ocultar l:neas "e "ivisi%n al imprimir/ utilice el si uiente c%"i o#
$objPHPExcel !getActi"eS#eet() !setS#o2c$i(lines(t$%e);

PHPExcel Developer Documentation

2G

#.,.1,.

.arco ilas ) columnas a repetir en la parte superior ) i7quierda

PHPExcel pue"e repetir !ilas espec:!icas ; las cKlulas en la parte superior e i(7uier"a "e una p3 ina. El c%"i o si uiente es un e0emplo "e c%mo repetir la !ila 1 a $ en ca"a p3 ina impresa "e una &o0a "e c3lculo espec:!ica#
$objPHPExcel !getActi"eS#eet() !getPageSet%p() !setRo2s3oRepeatAt3op1-Sta$tAn(En((A:'O);

#.,.18.

Especi icar el rea de impresin

Para especi!icar la &o0a "e c3lculo "e 3rea "e impresi%n/ utilice el si uiente c%"i o#
$objPHPExcel !getActi"eS#eet() !getPageSet%p() !setP$intA$ea(.AA:EO.);

>am)iKn se pue"e imprimir mAltiples 3reas en una sola &o0a "e c3lculo#
$objPHPExcel !getActi"eS#eet() !getPageSet%p() !setP$intA$ea(.AA:EO:cR:056.);

#.,.19.

"ormato de celdas

<na cKlula pue"e tener el !ormato "e !uente/ )or"e/ relleno/ ... la in!ormaci%n "e estilo. Por e0emplo/ se pue"e a0ustar el color "e !on"o "e una cel"a a ro0o/ a0usta"o a la "erec&a/ - la !rontera a !rontera ruesa estilo - ne ro. 8amos a &acer 7ue en la cel"a B2#
$objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !get=ont() !getColo$() !setARc1(PHPExcel_St-le_Colo$::C4L4R_RE9); $objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !getAlign,ent() !setHo$i>ontal(PHPExcel_St-le_Align,ent::H4RIZ4V3AL_RIcH3); $objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !get1o$(e$s() !set1o$(e$St-le(PHPExcel_St-le_1o$(e$::14R9ER_3HIC;); $objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !get1o$(e$s() !set1o$(e$St-le(PHPExcel_St-le_1o$(e$::14R9ER_3HIC;); $objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !get1o$(e$s() !set1o$(e$St-le(PHPExcel_St-le_1o$(e$::14R9ER_3HIC;); $objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !get1o$(e$s() !set1o$(e$St-le(PHPExcel_St-le_1o$(e$::14R9ER_3HIC;); !get3op() !get1otto,() !getLe&t() !getRig#t()

$objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !get=ill() !set=ill3-pe(PHPExcel_St-le_=ill::=ILL_S4LI9); $objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !get=ill() !getSta$tColo$() !setARc1(.====6666.);

A partir "e PHPExcel 1.7.0 et9t-le ,+ tam)iKn acepta un ran o "e cel"as como un par3metro. Por e0emplo/ pue"e esta)lecer un !on"o "e color ro0o en un ran o "e cel"as#
$objPHPExcel !getActi"eS#eet() !getSt-le(.1U:17.) !get=ill() !set=ill3-pe(PHPExcel_St-le_=ill::=ILL_S4LI9) !getSta$tColo$() !setARc1(.====6666.);

>ip

9e recomien"a al estilo "e las cKlulas a la ve(/ utili(an"o et9t-le por e0emplo ,=A1# M$00+/ en ve( "e la)rar las cKlulas "e !orma in"ivi"ual en un )ucle. Esto es muc&o m3s r3pi"o en comparaci%n con )ucle a travKs "e las cKlulas - el estilo "e !orma in"ivi"ual.

PHPExcel Developer Documentation

2D

>am)iKn &a- una !orma alternativa para esta)lecer estilos. El c%"i o si uiente "e!ine el estilo "e una cKlula "e ne rita/ alineaci%n "erec&a/ )or"e superior "el a"o - un relleno "e "e ra"a"o#
$st-leA$$a-'<'a$$a-( .&ont.'<!'a$$a-( .bol(.'<!'t$%e: ): .align,ent.'<!'a$$a-( .#o$i>ontal.'<!'PHPExcel_St-le_Align,ent::H4RIZ4V3AL_RIcH3: ): .bo$(e$s.'<!'a$$a-( .top.'<!'a$$a-( .st-le.'<!'PHPExcel_St-le_1o$(e$::14R9ER_3HIV: ): ): .&ill.'<!'a$$a-( .t-pe.'<!'PHPExcel_St-le_=ill::=ILL_cRA9IEV3_LIVEAR: .$otation.'<!'T6: .sta$tcolo$.'<!'a$$a-( .a$gb.'<!'.==A6A6A6.: ): .en(colo$.'<!'a$$a-( .a$gb.'<!'.========.: ): ): ); $objPHPExcel !getActi"eS#eet() !getSt-le(.AU.) !appl-=$o,A$$a-($st-leA$$a-);

2 con un ran o "e cel"as#


$objPHPExcel !getActi"eS#eet() !getSt-le(.1U:17.) !appl-=$o,A$$a-($st-leA$$a-);

Este mKto"o alternativo utili(an"o matrices "e)e ser m3s r3pi"o en tKrminos "e e0ecuci%n ca"a ve( 7ue va a con!i urar m3s "e una propie"a" "e estilo. Pero la "i!erencia apenas se pue"e me"ir a menos 7ue &a-a "i!erentes estilos en el li)ro.

Antes "e PHPExcel 1.7.0 "uplicate9t-leArra- ,+ es el mKto"o recomen"a"o para la)rar un ran o "e cel"as/ pero este mKto"o &a 7ue"a"o en "esuso "es"e et9t-le ,+ &a comen(a"o a aceptar un ran o "e cel"as.

#.,.1:.

;mero de ormatos

A menu"o se "esea !ormato a los nAmeros en Excel. Por e0emplo/ uste" pue"e "esear un separa"or "e miles/ m3s un nAmero !i0o "e "ecimales "espuKs "el separa"or "ecimal. 2 tal ve( 7uieres un poco los nAmeros para ser rellena"o con ceros. En Microso!t 2!!ice Excel 7ue estKn !amiliari(a"os con la selecci%n "e un !ormato "e nAmero "el =Jormato "e cel"as= "e "i3lo o. A7u: &a- al unos !ormatos pre"e!ini"os nAmero "isponi)le inclu-en"o al unas "e las !ec&as. El "i3lo o est3 "ise?a"o "e una manera para 7ue uste" no tiene 7ue interactuar con el nAmero "e c%"i o su)-acente !ormato cru"o a menos 7ue necesite un !ormato "e nAmero personali(a"o. En PHPExcel/ tam)iKn pue"e aplicar varios !ormatos pre"e!ini"os "e nAmero. E0emplo#
$objPHPExcel !getActi"eS#eet() !getSt-le(.AA.) !getV%,be$=o$,at() !set=o$,atCo(e(PHPExcel_St-le_V%,be$=o$,at::=4R0A3_VC01ER_C400A_SEPARA3E9A);

PHPExcel Developer Documentation

30

Este !ormato ser3 un nAmero por e0emplo/ 1.$G7/2 por lo 7ue se muestra como 1/$G7.20 al a)rir el li)ro en Microso!t 2!!ice Excel. ,Depen"ien"o "e la con!i uraci%n "e los separa"ores "ecimales - "e miles "e Microso!t 2!!ice Excel 7ue pue"e aparecer como 1.$G7/20+ <ste" pue"e conse uir exactamente lo mismo 7ue lo anterior me"iante el uso "e este#
$objPHPExcel !getActi"eS#eet() !getSt-le(.AA.) !getV%,be$=o$,at() !set=o$,atCo(e(.d:dd6*66.);

En Microso!t 2!!ice Excel/ as: como en PHPExcel/ uste" ten"r3 7ue interactuar con el !ormato OAL c%"i os numKricos siempre 7ue uste" necesite al unos "e !ormato nAmero especial. E0emplo#
$objPHPExcel !getActi"eS#eet() !getSt-le(.AA.) !getV%,be$=o$,at() !set=o$,atCo(e(.e1l%efe!<U666f$d:dd6;eRe(feD6f$d:dd6;$d:dd6.);

2tro e0emplo es cuan"o se "esea 7ue los nAmeros cero rellena"o con ceros a la i(7uier"a con una lon itu" !i0a#

$objPHPExcel !getActi"eS#eet() !getCell(.AA.) !setVal%e(AT); $objPHPExcel !getActi"eS#eet() !getSt-le(.AA.) !getV%,be$=o$,at() !set=o$,atCo(e(.6666.);'EE'2ill's#o2'as'66AT'in'Excel

:ip

5as re las para componer un c%"i o "e !ormato "e nAmero en Excel pue"e ser )astante complica"o. A veces/ uste" sa)e c%mo crear un !ormato "e nAmero en Microso!t 2!!ice Excel/ pero no sa)en lo 7ue el nAmero "e c%"i o "el !ormato su)-acente parece.p4%mo lo encontrasteE 5os lectores env:an con PHPExcel venir al rescate. 4ar ue su plantilla "e li)ro usan"o/ por e0emplo excel2007 lector a revelar el c%"i o "e !ormato "e nAmero. E0emplo "e como leer un c%"i o "e !ormato "e nAmero para la cel"a A1#
$objRea(e$'<'PHPExcel_I4=acto$-::c$eateRea(e$(.Excel5667.); $objPHPExcel'<'$objRea(e$ !loa((.te,plate*xlsx.); "a$_(%,p($objPHPExcel !getActi"eS#eet() !getSt-le(.AA.) !getV%,be$=o$,at() !get=o$,atCo(e());

5os usuarios avan(a"os pue"en encontrar m3s r3pi"amente a inspeccionar el c%"i o "e !ormato "e nAmero "irectamente por el cam)io "e nom)re a template.xlsx template.(ip/ "escomprimir/ - en )usca "e la pie(a relevante "e c%"i o 1M5 "e explotaci%n/ el c%"i o "e !ormato "e nAmero en xl styles.xml.

#.,.2<.

4lineacin y a/ustar el te%to

8amos a con!i urar la alineaci%n vertical "e la parte superior "e las cel"as AA:'9R
$objPHPExcel !getActi"eS#eet() !getSt-le(.AA:9R.) !getAlign,ent() !setVe$tical(PHPExcel_St-le_Align,ent::VER3ICAL_34P);

A7u: es c%mo lo rar a0ustar el texto#


$objPHPExcel !getActi"eS#eet() !getSt-le(.AA:9R.) !getAlign,ent() !setG$ap3ext(t$%e);

PHPExcel Developer Documentation

31

#.,.21.

*on iguracin del estilo predeterminado de un li+ro

Es posi)le esta)lecer el estilo pre"etermina"o "e un li)ro. 8amos a esta)lecer la !uente pre"etermina"a Arial "e tama?o G#
$objPHPExcel !get9e&a%ltSt-le() !get=ont() !setVa,e(.A$ial.); $objPHPExcel !get9e&a%ltSt-le() !get=ont() !setSi>e(?);'

#.,.22.

Estilo +ordes de la celda

En PHPExcel es !3cil "e aplicar "i!erentes !ronteras en una selecci%n rectan ular. As: es como aplicar un es7uema "e color ro0o )or"e rueso alre"e"or "e las cel"as B2# "el ]BG.
$st-leA$$a-'<'a$$a-( .bo$(e$s.'<!'a$$a-( .o%tline.'<!'a$$a-( .st-le.'<!'PHPExcel_St-le_1o$(e$::14R9ER_3HIC;: .colo$.'<!'a$$a-(.a$gb.'<!'.====6666.): ): ): ); $objGo$Hs#eet !getSt-le(.15:c?.) !appl-=$o,A$$a-($st-leA$$a-);

En Microso!t 2!!ice Excel/ la operaci%n anterior se correspon"er:a con la selecci%n "e las cel"as B2# "el ]BG/ el lan(amiento "e el cua"ro "e "i3lo o "e estilo/ la elecci%n "e un )or"e ro0o - espeso/ &acer clic en el es7uema =componente "e la !rontera=.

>en a en cuenta 7ue las l:neas !ronteri(as se aplica a la selecci%n rectan ular B2# "el ]BG en su con0unto/ no en ca"a cKlula in"ivi"ual. <ste" pue"e lo rar cual7uier e!ecto "e )or"e me"iante el uso "e s%lo el cinco !ronteras "e )ase operativos en una sola cKlula en un momento# Arra/ .e/ le!t ri &t top )ottom "ia onal *aps to propert/ et5e!t,+ etOi &t,+ et>op,+ etBottom,+ etDia onal,+

acceso "irecto "e las !ronteras a"icional mu- Atil/ como en el e0emplo encima "e la. >&ese are t&e s&ortcut )or"ers availa)le# Estos son los l:mites "e acceso "irecto "isponi)les# Arra/ .e/ all)or"ers outline insi"e vertical &ori(ontal *aps to propert/ etAllBor"ers,+ et2utline,+ et.nsi"e,+ et8ertical,+ etHori(ontal,+

<na visi%n eneral "e to"os los accesos "irectos !rontera se pue"e ver en la si uiente

PHPExcel Developer Documentation

32

ima en#

9i al mismo tiempo esta)lecer all)or"ers por e0emplo/ - vertical/ entonces tenemos =superposici%n= "e las !ronteras/ - uno "e los componentes tiene 7ue anar so)re el otro/ "on"e no &a- !ronteras se superponen. En PHPExcel/ el m3s "K)il al m3s !uerte "e las !ronteras/ la lista es la si uiente# all)or"ers/ contorno ; interior/ vertical - &ori(ontal/ i(7uier"a ; "erec&a ; arri)a ; a)a0o ; "ia onal. Esta 0erar7u:a "e la !rontera pue"e ser utili(a"a para lo rar e!ectos "i!erentes "e una manera !3cil.

#.,.23.

"ormato condicional en una celda

<na cKlula pue"e "ar !ormato con"icional/ con )ase en una norma espec:!ica. Por e0emplo/ se pue"e a0ustar el color "e !on"o "e una cel"a a ro0o si su valor est3 por "e)a0o "e cero/ - ver"e si su valor es cero o m3s. 9e pue"e esta)lecer un con0unto "e re las "e estilo con"icional a una cel"a usan"o el si uiente c%"i o#
$objCon(itionalA'<'ne2'PHPExcel_St-le_Con(itional(); $objCon(itionalA !setCon(ition3-pe(PHPExcel_St-le_Con(itional::C4V9I3I4V_CELLIS); $objCon(itionalA !set4pe$ato$3-pe(PHPExcel_St-le_Con(itional::4PERA34R_LESS3HAV); $objCon(itionalA !a((Con(ition(.6.); $objCon(itionalA !getSt-le() !get=ont() !getColo$() !setARc1(PHPExcel_St-le_Colo$::C4L4R_RE9); $objCon(itionalA !getSt-le() !get=ont() !set1ol((t$%e); $objCon(itional5'<'ne2'PHPExcel_St-le_Con(itional(); $objCon(itional5 !setCon(ition3-pe(PHPExcel_St-le_Con(itional::C4V9I3I4V_CELLIS); $objCon(itional5 !set4pe$ato$3-pe(PHPExcel_St-le_Con(itional::4PERA34R_cREA3ER3HAV4RENCAL); $objCon(itional5 !a((Con(ition(.6.); $objCon(itional5 !getSt-le() !get=ont() !getColo$() !setARc1(PHPExcel_St-le_Colo$::C4L4R_cREEV); $objCon(itional5 !getSt-le() !get=ont() !set1ol((t$%e); $con(itionalSt-les'<'$objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !getCon(itionalSt-les(); a$$a-_p%s#($con(itionalSt-les:'$objCon(itionalA); a$$a-_p%s#($con(itionalSt-les:'$objCon(itional5);

PHPExcel Developer Documentation

33

$objPHPExcel !getActi"eS#eet() !getSt-le(.15.) !setCon(itionalSt-les($con(itionalSt-les);

9i "esea copiar el con0unto "e re las a otras cel"as/ pue"e "uplicar el o)0eto "e estilo#
$objPHPExcel !getActi"eS#eet() !(%plicateSt-le('$objPHPExcel !getActi"eS#eet() !getSt-le(.15.):'.1U:17.');

#.,.2#.

4=ade un comentario a una celda

Para a re ar un comentario a una cel"a/ utilice el si uiente c%"i o. El e0emplo si uiente a re a un comentario a la cel"a E11#
$objPHPExcel !getActi"eS#eet() !getCo,,ent(.EAA.) !setA%t#o$(.PHPExcel.); $objCo,,entRic#3ext'<'$objPHPExcel !getActi"eS#eet() !getCo,,ent(.EAA.) !get3ext() !c$eate3extR%n(.PHPExcel:.); $objCo,,entRic#3ext !get=ont() !set1ol((t$%e); $objPHPExcel !getActi"eS#eet() !getCo,,ent(.EAA.) !get3ext() !c$eate3extR%n(/F$Fn/); $objPHPExcel !getActi"eS#eet() !getCo,,ent(.EAA.) !get3ext() !c$eate3extR%n(.3otal' a,o%nt'on't#e'c%$$ent'in"oice:'excl%(ing'VA3*.);

#.,.2!.

4plicar auto iltro a un rango de celdas

Para aplicar un Auto!iltro a un ran o "e cel"as/ utilice el si uiente c%"i o#


$objPHPExcel !getActi"eS#eet() !setA%to=ilte$(.AA:CT.);

Ase3Krese de 2ue sie&pre inclu/en la 3a&a co&pleta de (iltroL Excel es compati)le con a0uste s%lo la !ila "e t:tulo/ pero eso no es una )uena pr3ctica ...

#.,.2,.

>e inicin de la seguridad en una ho/a de clculo

Excel o!rece 3 niveles "e =protecci%n=# se uri"a" "e los "ocumentos/ &o0as "e se uri"a" - la se uri"a" "e la cKlula. 5a protecci%n "e "ocumentos le permite esta)lecer una contrase?a en una &o0a "e c3lculo completa/ lo 7ue permite 7ue se &a an cam)ios s%lo cuan"o se intro"u(ca la contrase?a. Ho0a "e se uri"a" o!rece otras opciones "e se uri"a"# pue"e no permitir la inserci%n "e !ilas en una &o0a espec:!ica/ la clasi!icaci%n no permitir/ ...

PHPExcel Developer Documentation

34

la se uri"a" "e la cKlula o!rece la opci%n "e )lo7uear ; "es)lo7uear un celular/ as: como mostrar ; ocultar la !%rmula interna

<n e0emplo so)re se uri"a" "e los "ocumentos "e a0uste#


$objPHPExcel !getSec%$it-() !setLocHGin(o2s(t$%e); $objPHPExcel !getSec%$it-() !setLocHSt$%ct%$e(t$%e); $objPHPExcel !getSec%$it-() !setGo$HbooHPass2o$((/PHPExcel/);

<n e0emplo "e &o0a "e c3lculo "e con!i uraci%n "e se uri"a"#
$objPHPExcel $objPHPExcel $objPHPExcel $objPHPExcel $objPHPExcel !getActi"eS#eet() !getActi"eS#eet() !getActi"eS#eet() !getActi"eS#eet() !getActi"eS#eet() !getP$otection() !getP$otection() !getP$otection() !getP$otection() !getP$otection() !setPass2o$((.PHPExcel.); !setS#eet(t$%e); !setSo$t(t$%e); !setInse$tRo2s(t$%e); !set=o$,atCells(t$%e);

<n e0emplo "e con!i uraci%n "e se uri"a" "e cKlulas#


$objPHPExcel !getActi"eS#eet() !getSt-le(.1A.) !getP$otection() !setLocHe(( PHPExcel_St-le_P$otection::PR43EC3I4V_CVPR43EC3E9 );

Ase3Krese de acti%ar la protecci'n de hoHa de c5lculo si necesita al3una de las caracterMsticas de protecci'n de hoHa de c5lculoNL Esto se pue"e &acer utili(an"o el si uiente c%"i o n o)0PHPExcelB`# etActive9&eet ,+ B` etProtection ,+ B` set9&eet ,ver"a"ero+

#.,.28.

.arco de validacin de datos en una celda

5a vali"aci%n "e "atos es una potente caracter:stica "e excel2007. 9e permite especi!icar un !iltro "e entra"a "e los "atos 7ue se pue"en insertar en una cel"a espec:!ica. Este !iltro pue"e ser un 3rea "e "istri)uci%n ,es "ecir/ el valor "e)e estar entre 0 - 10+/ una lista ,en valor "e)e ser selecciona"o "e una lista+/ ... El si uiente !ra mento "e c%"i o s%lo permite un nAmero entre 10 - 20 7ue se entr% en la cel"a B3#
$objVali(ation'<'$objPHPExcel !getActi"eS#eet() !getCell(.1U.) !get9ataVali(ation(); $objVali(ation !set3-pe('PHPExcel_Cell_9ataVali(ation::3WPE_GH4LE'); $objVali(ation !setE$$o$St-le('PHPExcel_Cell_9ataVali(ation::S3WLE_S34P'); $objVali(ation !setAllo21lanH(t$%e); $objVali(ation !setS#o2Inp%t0essage(t$%e); $objVali(ation !setS#o2E$$o$0essage(t$%e); $objVali(ation !setE$$o$3itle(.Inp%t'e$$o$.); $objVali(ation !setE$$o$(.V%,be$'is'not'allo2e(B.); $objVali(ation !setP$o,pt3itle(.Allo2e('inp%t.); $objVali(ation !setP$o,pt(.4nl-'n%,be$s'bet2een'A6'an('56'a$e'allo2e(*.); $objVali(ation !set=o$,%laA(A6); $objVali(ation !set=o$,%la5(56);

El si uiente !ra mento "e c%"i o s%lo permite un elemento selecciona"o "e una lista "e "atos 7ue "e)en !i urar en la cel"a B3#
$objVali(ation'<'$objPHPExcel !getActi"eS#eet() !getCell(.1O.) !get9ataVali(ation();

PHPExcel Developer Documentation

3$

$objVali(ation $objVali(ation $objVali(ation $objVali(ation $objVali(ation $objVali(ation $objVali(ation $objVali(ation $objVali(ation $objVali(ation $objVali(ation

!set3-pe('PHPExcel_Cell_9ataVali(ation::3WPE_LIS3'); !setE$$o$St-le('PHPExcel_Cell_9ataVali(ation::S3WLE_IV=4R0A3I4V'); !setAllo21lanH(&alse); !setS#o2Inp%t0essage(t$%e); !setS#o2E$$o$0essage(t$%e); !setS#o29$op9o2n(t$%e); !setE$$o$3itle(.Inp%t'e$$o$.); !setE$$o$(.Val%e'is'not'in'list*.); !setP$o,pt3itle(.PicH'&$o,'list.); !setP$o,pt(.Please'picH'a'"al%e'&$o,'t#e'($op (o2n'list*.); !set=o$,%laA(./Ite,'A:Ite,'1:Ite,'C/.);

4uan"o se utili(a una lista "e vali"aci%n "e "atos como los anteriores/ ase Arese "e poner la lista entre =-= - 7ue "ivi"e los elementos con una coma ,/+. Es importante recor"ar 7ue cual7uier ca"ena 7ue participan en una !%rmula "e Excel se permite un m3ximo "e 2$$ caracteres ,no )-tes+. Esto esta)lece un l:mite en el nAmero "e elementos 7ue pue"e tener en la ca"ena =Punto A/ Punto B/ Punto 4=. Por lo tanto/ normalmente es una me0or i"ea "e escri)ir el art:culo "irectamente los valores en al unos ran o "e cel"as/ por e0emplo A1# A3/ - en lu ar "e utili(ar/ por e0emplo/ n o)08ali"ationB` setJormula1 ,MHo0a "e 3Q n A n 1# n A nM. 2tro )ene!icio es 7ue el tema pue"e contener los valores propios "e la coma M/M persona0e. 9i uste" necesita la vali"aci%n "e "atos en varias cel"as/ se pue"e clonar el con0unto "e re las#
$objPHPExcel !getActi"eS#eet() !getCell(.1?.) !set9ataVali(ation(clone' $objVali(ation);

#.,.29.

.arco columna del ancho de una

<n anc&o "e columna se pue"e esta)lecer me"iante el si uiente c%"i o#


$objPHPExcel !getActi"eS#eet() !getCol%,n9i,ension(.9.) !setGi(t#(A5);

9i "esea PHPExcel para reali(ar un c3lculo autom3tico "e anc&o/ utilice el si uiente c%"i o. PHPExcel se aproximar3 a la columna con el anc&o "e la columna "e valor m3s amplia.
$objPHPExcel !getActi"eS#eet() !getCol%,n9i,ension(.1.) !setA%toSi>e(t$%e);

5a me"i"a para el anc&o "e columna en PHPExcel no correspon"e exactamente a la me"i"a con 7ue se pue"e utili(ar en Microso!t 2!!ice Excel. anc&os "e columna son "i!:ciles "e tratar en Excel/ - &a- varias me"i"as para el anc&o "e columna.

1+ Ancho interior en unidades de caracteres ,por e0emplo G.43 esto es pro)a)lemente lo 7ue uste" est3 !amiliari(a"o con en Excel+ 2+ de ancho total en pMxeles ,por e0emplo/ H4 p:xeles+ 3+ de ancho total en unidades de caracteres ,por e0emplo/ D.140H2$/ el valor B1 in"ica anc&o "e "esconexi%n+

PHPExcel Developer Documentation

3H

PHPExcel sie&pre opera con A) Ode ancho total en unidades de car5cterO 7ue en reali"a" es el Anico valor 7ue se almacena en un arc&ivo "e Excel/ por lo tanto/ la me"i"a m3s !ia)le. <n!ortunatel-. Por "es racia/ *icroso(t "((ice Excel no te presenta&os esta &edida$ En cam)io las me"i"as 1+ - 2+ se calculan me"iante la aplicaci%n cuan"o se a)re el arc&ivo - estos valores se presentan en "iversos "i3lo os - conse0os "e la &erramienta. 5a uni"a" "e anc&o "e car3cter es el anc&o "e un =0= ,cero+ li!o en la !uente pre"etermina"a li)ros. Por lo tanto anc&o "e las columnas se mi"e en uni"a"es "e car3cter en "os li)ros "i!erentes s%lo se pue"e comparar si tienen la !uente pre"etermina"a mismo li)ro. 9i tiene al An arc&ivo "e Excel - la necesi"a" "e conocer el anc&o "e las columnas "e la me"i"a 3+/ pue"e leer el arc&ivo "e Excel con PHPExcel - el eco "e los valores recupera"os.

#.,.2:.

.ostrar u ocultar una columna

Para esta)lecer la &o0a "e c3lculo "e la visi)ili"a" "e una columna/ pue"e utili(ar el c%"i o si uiente. 5a primera l:nea muestra expl:citamente la columna 4/ la se un"a l:nea "e la columna oculta D.
$objPHPExcel !getActi"eS#eet() !getCol%,n9i,ension(.C.) !setVisible(t$%e); $objPHPExcel !getActi"eS#eet() !getCol%,n9i,ension(.9.) !setVisible(&alse);

#.,.3<.

?rupo ) esquema de una columna

Para a rupar ; es7uema "e una columna/ pue"e utili(ar el c%"i o si uiente#
$objPHPExcel !getActi"eS#eet() !getCol%,n9i,ension(.E.) !set4%tlineLe"el(A);

>am)iKn pue"e contraer la columna. >en a en cuenta 7ue tam)iKn "e)e esta)lecer la columna invisi)le/ "e lo contrario la ca:"a no ser3 visi)le en Excel 2007.
$objPHPExcel !getActi"eS#eet() !getCol%,n9i,ension(.E.) !setCollapse((t$%e); $objPHPExcel !getActi"eS#eet() !getCol%,n9i,ension(.E.) !setVisible(&alse);

Por !avor re!iKrase a la parte = rupo ; es)o(ar una !ila= "e un e0emplo completo en el colapso.

P48>8 31>3/5: PHPEG/8= <5:5 5H5>3: 41 :874981 5 =5 >8:8/@5 (<0: >8I8/20). 0 @5/35 =5 3JK438:>5. El c%"i o si uiente a re a el resumen a la i(7uier"a#
$objPHPExcel !getActi"eS#eet() !setS#o2S%,,a$-Rig#t(&alse);

#.,.31.

.arco ila la altura de un

<na !ila "e la altura se pue"e a0ustar me"iante el si uiente c%"i o#


$objPHPExcel !getActi"eS#eet() !getRo29i,ension(.A6.) !setRo2Heig#t(A66);

#.,.32.

.ostrar u ocultar una ila

Para esta)lecer la &o0a "e c3lculo "e la visi)ili"a" "e una !ila/ pue"e utili(ar el c%"i o si uiente. El e0emplo si uiente se oculta la !ila nAmero 10.
$objPHPExcel !getActi"eS#eet() !getRo29i,ension(.A6.) !setVisible(&alse);

#.,.33.

?rupo ) es+o7ar una ila

PHPExcel Developer Documentation

37

Para a rupar ; es)o(ar una !ila/ pue"e utili(ar el c%"i o si uiente#


$objPHPExcel !getActi"eS#eet() !getRo29i,ension(.O.) !set4%tlineLe"el(A);

>am)iKn pue"e contraer la !ila. >en a en cuenta 7ue tam)iKn "e)e esta)lecer la l:nea invisi)le/ "e lo contrario la ca:"a no ser3 visi)le en Excel 2007.
$objPHPExcel !getActi"eS#eet() !getRo29i,ension(.O.) !setCollapse((t$%e); $objPHPExcel !getActi"eS#eet() !getRo29i,ension(.O.) !setVisible(&alse);

He a7u: un e0emplo 7ue se "esploma !ilas $0 a G0#


&o$'($i'<'OA;'$i'D<'?6;'$iPP)') $objPHPExcel !getActi"eS#eet() $objPHPExcel !getActi"eS#eet() $objPHPExcel !getActi"eS#eet() $objPHPExcel !getActi"eS#eet() $objPHPExcel !getActi"eS#eet() !setCellVal%e(.A.'*'$i:'/=Va,e'$i/); !setCellVal%e(.1.'*'$i:'/LVa,e'$i/); !setCellVal%e(.C.'*'$i:'/P#oneVo'$i/); !setCellVal%e(.9.'*'$i:'/=axVo'$i/); !setCellVal%e(.E.'*'$i:'t$%e);

$objPHPExcel !getActi"eS#eet() !getRo29i,ension($i) !set4%tlineLe"el(A); $objPHPExcel !getActi"eS#eet() !getRo29i,ension($i) !setVisible(&alse); + $objPHPExcel !getActi"eS#eet() !getRo29i,ension(?A) !setCollapse((t$%e);

Pue"e in"icar PHPExcel para a?a"ir a continuaci%n un resumen "e las !ilas ple a)les ,por "e!ecto+/ o superior. El c%"i o si uiente a re a el resumen anterior#
$objPHPExcel !getActi"eS#eet() !setS#o2S%,,a$-1elo2(&alse);

#.,.3#.

*om+inar ) unmerge celdas

9i uste" tiene un pe"a(o ran"e "e "atos 7ue "esea mostrar en una &o0a "e c3lculo/ pue"e com)inar "os o m3s cKlulas 0untas/ para convertirse en una cKlula. Esto se pue"e &acer me"iante el si uiente c%"i o#
$objPHPExcel !getActi"eS#eet() !,e$geCells(.AA?:E55.);

Extracci%n "e una !usi%n se pue"e &acer usan"o el mKto"o %n,e$geCells:


$objPHPExcel !getActi"eS#eet() !%n,e$geCells(.AA?:E55.);

#.,.3!.

(nsercin de ilas ) columnas

Pue"e insertar o eliminar !ilas ; columnas en una posici%n espec:!ica. El c%"i o si uiente inserta "os nuevas !ilas/ 0usto antes "e la !ila 7#
$objPHPExcel !getActi"eS#eet() !inse$tVe2Ro21e&o$e(7:'5);

#.,.3,.

4gregar un di+u/o a una ho/a de clculo

<n "i)u0o es siempre representa"o como un o)0eto in"epen"iente/ 7ue se pue"e a re ar a una &o0a "e c3lculo. Por lo tanto/ primero "e)e crear instancias "e un PHPExcel_Go$Hs#eet_9$a2ing' nueva/ - ce"er sus propie"a"es "e un valor si ni!icativo#
$obj9$a2ing'<'ne2'PHPExcel_Go$Hs#eet_9$a2ing(); $obj9$a2ing !setVa,e(.Logo.); $obj9$a2ing !set9esc$iption(.Logo.); $obj9$a2ing !setPat#(.*Ei,agesEo&&icelogo*jpg.);

PHPExcel Developer Documentation

3G

$obj9$a2ing !setHeig#t(U@);

Para a?a"ir el lo otipo "e la &o0a "e c3lculo/ utilice el si uiente !ra mento "e c%"i o. PHPExcel crea el v:nculo entre el "i)u0o - la &o0a "e c3lculo#
$obj9$a2ing !setGo$Hs#eet($objPHPExcel !getActi"eS#eet());

Pue"e esta)lecer las propie"a"es "e numerosas en un "i)u0o/ a7u: est3n al unos e0emplos#
$obj9$a2ing $obj9$a2ing $obj9$a2ing $obj9$a2ing $obj9$a2ing $obj9$a2ing $obj9$a2ing $obj9$a2ing !setVa,e(.Pai(.); !set9esc$iption(.Pai(.); !setPat#(.*Ei,agesEpai(*png.); !setCoo$(inates(.1AO.); !set4&&set8(AA6); !setRotation(5O); !getS#a(o2() !setVisible(t$%e); !getS#a(o2() !set9i$ection(RO);

#.,.38.

4=adir te%to enriquecido a una celda

A"ici%n "e texto enri7ueci"o a una cKlula se pue"e &acer uso "e instancias PHPExcel_Ric#3ext*' He a7u: un e0emplo/ 7ue crea la rica ca"ena "e texto si uiente# Esta !actura se pa a dentro de los treinta d'as si&uientes al final del mes a menos 7ue se especi!i7ue lo contrario en la !actura.
$objRic#3ext'<'ne2'PHPExcel_Ric#3ext(); $objRic#3ext !c$eate3ext(.3#is'in"oice'is'.); $objPa-able'<'$objRic#3ext !c$eate3extR%n(.pa-able'2it#in't#i$t-'(a-s'a&te$'t#e'en(' o&'t#e',ont#.); $objPa-able !get=ont() !set1ol((t$%e); $objPa-able !get=ont() !setItalic(t$%e); $objPa-able !get=ont() !setColo$('ne2' PHPExcel_St-le_Colo$('PHPExcel_St-le_Colo$::C4L4R_9AR;cREEV')'); $objRic#3ext !c$eate3ext(.:'%nless'a',enos'K%e'se'especi&iK%e'lo'cont$a$io'en' la'&act%$a*'.); $objPHPExcel !getActi"eS#eet() !getCell(.AA?.) !setVal%e($objRic#3ext);

#.,.39.

>e inir un rango con nom+re

HPExcel apo-a la "e!inici%n "e los ran os con nom)re. Estos se pue"en "e!inir me"iante el si uiente c%"i o# EE'Ag$ega$'alg%nos'(atos
$objPHPExcel $objPHPExcel $objPHPExcel $objPHPExcel $objPHPExcel !setActi"eS#eetIn(ex(6); !getActi"eS#eet() !setCellVal%e(.AA.:'.=i$stna,e:.); !getActi"eS#eet() !setCellVal%e(.A5.:'.Lastna,e:.); !getActi"eS#eet() !setCellVal%e(.1A.:'.0aa$ten.); !getActi"eS#eet() !setCellVal%e(.15.:'.1allia%2.);

EE'9e&ini$'$angos'con'no,b$e
$objPHPExcel !a((Va,e(Range('ne2'PHPExcel_Va,e(Range(.Pe$son=V.:'$objPHPExcel !getActi"eS#eet():'.1A.)'); $objPHPExcel !a((Va,e(Range('ne2'PHPExcel_Va,e(Range(.Pe$sonLV.:'$objPHPExcel !getActi"eS#eet():'.15.)');

PHPExcel Developer Documentation

3D

2pcionalmente/ un cuarto par3metro se pue"e pasar la "e!inici%n "el ran o con nom)re local ,es "ecir/ s%lo se pue"e usar en la &o0a "e c3lculo actual+. ran os con nom)re son lo)ales por "e!ecto.

#.,.3:.

Redirigir la salida a la @e+ del navegador de un cliente

A veces/ uno realmente 7uiere a la sali"a "e un arc&ivo en el nave a"or "el cliente/ especialmente cuan"o la creaci%n "e &o0as "e c3lculo so)re la marc&a. Ha- al unos pasos sencillos 7ue pue"e se uir para &acer esto#

4rear la &o0a "e c3lculo PHPExcel 9ali"a "e ca)eceras H>>P para el tipo "e "ocumento 7ue "esea a la sali"a <tilice el PHPExcel'Lriter' "e su elecci%n/ - uar"ar en =p&p# ;; sali"a=
PHPExcel'Lriter'Excel2007 utili(a almacenamiento temporal cuan"o se escri)e en p&p# ;; sali"a. De !orma pre"etermina"a/ los arc&ivos temporales se almacenan en el "irectorio "e tra)a0o "e ui%n. 4uan"o no &a- acceso/ se vuelve al sistema "e arc&ivos temporales "e u)icaci%n "e la explotaci%n.

Esto puede no ser se3ura para personas no autorizadasL Depen"ien"o "e la con!i uraci%n "e su sistema operativo/ el almacenamiento temporal pue"e ser le:"o por cual7uier persona 7ue utilice la carpeta "e almacenamiento temporal misma. L&en 4uan"o la con!i"enciali"a" "e su "ocumento es necesario/ se recomien"a no utili(ar p&p# ;; sali"a.

H>>P !eaders
E0emplo "e una secuencia "e coman"os re"iri ir un arc&ivo "e Excel 2007 para el nave a"or "el cliente#
DIp#p EQ'AK%g'#ab$L'algo'(e'cM(igo'(on(e'se'c$ea'objPHPExcel'QE EE'Re(i$igi$'la'sali(a'al'na"ega(o$'(el'cliente #ea(e$(.Content 3-pe:'applicationE"n(*openx,l&o$,ats o&&ice(oc%,ent*sp$ea(s#eet,l*s#eet.); #ea(e$(.Content 9isposition:'attac#,ent;&ilena,e</,-&ile*xlsx/.); #ea(e$(.Cac#e Cont$ol:',ax age<6.); $objG$ite$'<'PHPExcel_I4=acto$-::c$eateG$ite$($objPHPExcel:'.Excel5667.); $objG$ite$ !sa"e(.p#p:EEo%tp%t.);' I!

E0emplo "e una secuencia "e coman"os re"iri ir un arc&ivo Excel$ al cliente "el nave a"or "e la#
DIp#p EQ'AK%g'#ab$L'algo'(e'cM(igo'(on(e'se'c$ea'objPHPExcel'QE EE'Re(i$igi$'la'sali(a'al'na"ega(o$'(el'cliente #ea(e$(.Content 3-pe:'applicationE"n(*,s excel.); #ea(e$(.Content 9isposition:'attac#,ent;&ilena,e</,-&ile*xls/.); #ea(e$(.Cac#e Cont$ol:',ax age<6.); $objG$ite$'<'PHPExcel_I4=acto$-::c$eateG$ite$($objPHPExcel:'.ExcelO.); $objG$ite$ !sa"e(.p#p:EEo%tp%t.);' I!

PHPExcel Developer Documentation

40

Precauci%n# Ase Arese "e no incluir nin An eco "e las "eclaraciones o la sali"a "e cual7uier otro conteni"o 7ue el arc&ivo "e Excel. @o "e)e &a)er espacios en )lanco antes "e la apertura qE Eti7uetas p&p - m3s en un salto "e l:nea "espuKs "e la clausuraE` Eti7uetas ,7ue tam)iKn pue"e ser omiti"o para evitar pro)lemas+. Ase Arese "e 7ue la secuencia "e coman"os se uar"a sin una lista "e materiales ,marca "e or"en "e )-tes+. ,De)i"o a 7ue este cuenta como eco "e la sali"a+ lo mismo se aplica a to"os los arc&ivos inclui"os

@o se uir estas normas pue"e resultar en arc&ivos "e Excel corruptos lle ar al nave a"or "el cliente/ - ; o 7ue los enca)e(a"os no se pue"e esta)lecer por PHP ,7ue resulta en mensa0es "e a"vertencia+.

#.,.#<.

4/uste del ancho de columna predeterminado

anc&o "e columna pre"etermina"o se pue"e con!i urar me"iante el si uiente c%"i o#
$objPHPExcel !getActi"eS#eet() !get9e&a%ltCol%,n9i,ension() !setGi(t#(A5);

#.,.#1.

4/uste de la altura de la ila por de ecto

"e alto "e !ila pre"etermina"o se pue"e con!i urar me"iante el si uiente c%"i o#
$objPHPExcel !getActi"eS#eet() !get9e&a%ltRo29i,ension() !setRo2Heig#t(AO);

#.,.#2.

4gregar un di+u/o a una ho/a de ?>

Po"r:a &a)er una situaci%n en la 7ue "esea enerar una ima en "e memoria en el uso "e ]D a re arlo a una &o0a "e c3lculo PHPExcel sin tener 7ue uar"ar este arc&ivo en una u)icaci%n temporal. He a7u: un e0emplo 7ue enera una ima en en la memoria - lo a re a a la &o0a "e c3lculo activa# EE'cene$a$'%na'i,agen'
$g(I,age'<'hi,agec$eatet$%ecolo$(A56:'56)'o$'(ie(.Cannot'Initiali>e'ne2'c9'i,age' st$ea,.); $textColo$'<'i,agecolo$allocate($g(I,age:'5OO:'5OO:'5OO); i,agest$ing($g(I,age:'A:'O:'O:''.C$eate('2it#'PHPExcel.:'$textColo$); E'E'Aia(i$'%n'(ib%jo'(e'la'#oja'(e'cLlc%lo' $obj9$a2ing'<'ne2'PHPExcel_Go$Hs#eet_0e,o$-9$a2ing(); $obj9$a2ing !setVa,e(.Sa,ple'i,age.); $obj9$a2ing !set9esc$iption(.Sa,ple'i,age.); $obj9$a2ing !setI,ageReso%$ce($g(I,age); $obj9$a2ing !setRen(e$ing=%nction(PHPExcel_Go$Hs#eet_0e,o$-9$a2ing::REV9ERIVc_jPEc); $obj9$a2ing !set0i,e3-pe(PHPExcel_Go$Hs#eet_0e,o$-9$a2ing::0I0E3WPE_9E=ACL3); $obj9$a2ing !setHeig#t(U@); $obj9$a2ing !setGo$Hs#eet($objPHPExcel !getActi"eS#eet());

#.,.#3.

.arco ho/a de clculo el nivel de 7oom

Para esta)lecer el nivel "e (oom "e una &o0a "e c3lculo/ el si uiente c%"i o se pue"e utili(ar#
$objPHPExcel !getActi"eS#eet() !getS#eetVie2() !setZoo,Scale(7O);

PHPExcel Developer Documentation

41

>en a en cuenta 7ue el nivel "e (oom "e)e estar en ran o "e 10 B 400.

#.,.##.

$o/a de color de icha

A veces se "esea esta)lecer un color "e !ic&a "e &o0a. Por e0emplo/ uste" pue"e tener una !ic&a "e &o0a ro0a#
$objGo$Hs#eet !get3abColo$() !setRc1(.==6666.);

#.,.#!.

*rear ho/as de clculo en un li+ro

9i necesita crear m3s &o0as "el li)ro/ a7u: es c%mo#


$objGo$Hs#eetA'<'$objPHPExcel !c$eateS#eet(); $objGo$Hs#eetA !set3itle(.Anot#e$'s#eet.);

Piense en create9&eet ,+ como la =&o0a .nsertar )ot%n en Excel. 4uan"o aprietas el )ot%n "e una &o0a nueva se a?a"e a la colecci%n existente "e las &o0as "el li)ro.

#.,.#,.

&cultos ho/as de clculo 3ho/a de estados6

Esta)lecer una &o0a "e c3lculo 7ue se oculta me"iante este c%"i o#
$objPHPExcel !getActi"eS#eet() !setS#eetState(PHPExcel_Go$Hs#eet::SHEE3S3A3E_HI99EV);

Es posi)le 7ue uste" "esea 7ue la &o0a "e c3lculo a ser O&u/ ocultoO$ 5a &o0a "e esta"os "isponi)les son#
PHPExcel_Go$Hs#eet::SHEE3S3A3E_VISI1LE PHPExcel_Go$Hs#eet::SHEE3S3A3E_HI99EV PHPExcel_Go$Hs#eet::SHEE3S3A3E_VERWHI99EV

En el esta"o "e &o0a "e Excel =mu- oculto= s%lo se pue"e esta)lecer me"iante pro ramaci%n/ por e0emplo/ con 8isual Basic Macro. @o es posi)le &acer una &o0a visi)le a travKs "e la inter!a( "e usuario.

#.,.#8.

4 i7quierda ho/a de >erecho

Ho0as "e c3lculo se pue"e a0ustar "e !orma in"ivi"ual si la columna =A= "e)e comen(ar en el la"o "erec&o o i(7uier"o. El valor pre"etermina"o es a la i(7uier"a. A7u: est3 c%mo con!i urar las columnas "e "erec&a a i(7uier"a. EE'A'la'i>K%ie$(a'#oja'(e'cLlc%lo'(e'la'(e$ec#a
$objPHPExcel !getActi"eS#eet() !setRig#t3oLe&t(t$%e);

PHPExcel Developer Documentation

42

!.
!.1.

Reali7acin de clculos de la rmula


-sando el motor de clculo P$PE%cel

4omo PHPExcel representa una &o0a "e c3lculo en la memoria/ sino 7ue tam)iKn o!rece capaci"a"es "e c3lculo "e la !%rmula. <na cel"a pue"e ser "e un tipo "e valor ,7ue contiene un nAmero o texto+/ o un tipo "e !%rmula ,7ue contiene una !%rmula 7ue pue"e ser evalua"o+. Por e0emplo/ la !%rmula =F 9<MA ,A1# A10+= se evalAa como la suma "e los valores en A1/ A2/ .../ A10. Para el c3lculo "e una !%rmula/ pue"e llamar a la cel"a 7ue contiene la !%rmula "el mKto"o "e la getCalc%late(Val%e (): por e0emplo#
$objPHPExcel !getActi"eS#eet() !getCell(.EAA.) !getCalc%late(Val%e();

9i uste" escri)e la si uiente l:nea "e c%"i o en la "emo !actura inclu-e con PHPExcel/ se evalAa como el valor =H4=#

2tra caracter:stica interesante "e la !%rmula anali(a"or "e PHPExcel/ es 7ue se pue"e a0ustar autom3ticamente una !%rmula para insertar ; eliminar !ilas ; columnas. He a7u: un e0emplo#

<ste" ve 7ue la !%rmula conteni"a en la cel"a E11 es =9<M ,E4# ED+=. A&ora/ cuan"o escri)o la si uiente l:nea "e c%"i o/ "os nuevas l:neas "e pro"uctos se a?a"en#
$objPHPExcel !getActi"eS#eet() !inse$tVe2Ro21e&o$e(7:'5);

PHPExcel Developer Documentation

43

p>e "iste cuentaE 5a !%rmula en la cel"a E11 ex ,a&ora E13/ -a 7ue a?a"e "os nuevas !ilas+/ &a cam)ia"o a =9<M ,E4# E11+=. A"em3s/ las cel"as inserta"as "uplicar la in!ormaci%n "e estilo "e la cel"a anterior/ al i ual 7ue el comportamiento "e Excel. >en a en cuenta 7ue am)os pue"en insertar !ilas - columnas.

!.2.

Limitaciones conocidas

Ha- al unas limitaciones conoci"as para el motor "e c3lculo PHPExcel. 5a ma-or:a "e ellos se "e)en al &ec&o "e 7ue una !%rmula "e Excel se convierte en c%"i o PHP antes "e ser e0ecuta"os. Esto si ni!ica 7ue la !%rmula "e c3lculo "e Excel est3 su0eto a las caracter:sticas "el len ua0e PHP.

!.2.1.

Precedencia de &peradores

E1 EG/8= LML E515 5 LNL. /090 LOL E515 <0/0 9A7 >8 LML 81 8= A=E8C:5 0:>315:35. L5 :8E=5 5128:30: 10 87 =0 K48 78 81/4812:5 423=3J51>0 8= 9020: >8 /A=/4=0 78 31/=4B8 /01 PHPEG/8=.
Petici%n "e prece"encia "e opera"ores en Excel# &ttp#;;support.microso!t.com;C);2$1GD &ttp#;;support.microso!t.com;C);2$1GD Petici%n "e prece"encia "e opera"ores en PHP# &ttp#;;www.p&p.net;operators &ttp#;;www.p&p.net;operators

!.2.2.

Las rmulas que se usan nmeros y te%to

5as !%rmulas 7ue se usan nAmeros - el texto pue"e pro"ucir resulta"os inespera"os e incluso el conteni"o "el arc&ivo ile i)le. Por e0emplo/ la !%rmula =F 3 m= Hola =/= se espera 7ue pro"u(ca un error en Excel ,l r8A52OQ+. Due De)i"o al &ec&o "e 7ue PHP convierte =Hola= a un valor numKrico ,cero+/ el resulta"o "e esta !%rmula se evalAa como 3 en lu ar "e evaluar como un error. Esto tam)iKn &ace 7ue el "ocumento "e Excel 7ue se eneran como con conteni"o ile i)le. De re!erencia para este comportamiento en PHP## &ttp#;;)e.p&p.net;manual;en;lan ua e.t-pes.strin .p&pllan ua e.t-pes.strin .conversion

PHPExcel Developer Documentation

44

,.

Lectura y escritura de archivos

4omo uste"es -a sa)en "e la parte 3.3 Oea"ers an" writers / 5os lectores - escritores / la lectura la escritura a un persiste almacenamiento no es posi)le utili(an"o la )ase "e clases PHPExcel. 4on este !in/ PHPExcel o!rece a los lectores - escritores/ 7ue son implementaciones "e PHPExcel'Lriter'.Oea"er - PHPExcel'Lriter'.Lriter.

,.1.

P$PE%celA(&"actory

5a AP. PHPExcel o!rece varios mKto"os para crear una instancia o PHPExcel'Lriter'.Lriter PHPExcel'Lriter'.Oea"er# 4reaci%n "irecta "e A travKs "e PHPExcel'.2Jactor-

>o"os los e0emplos "e)a0o "e "emostrar el mKto"o "e la creaci%n "irecta. >en a en cuenta 7ue tam)iKn pue"e utili(ar la clase PHPExcel'.2Jactor- para &acer esto.

,.1.1. *rear P$PE%celAReaderA(Reader utili7ando P$PE%celA(&"actory


Ha- "os mKto"os para la lectura "e un arc&ivo en PHPExcel# el uso "e tipo "e arc&ivo autom3tico "e resolver o expl:citamente. tipo "e arc&ivo autom3tico "e la resoluci%n "e los "i!erentes controles PHPExcel'Oea"er'.Oea"er "istri)ui"o con PHPExcel. 9i uno "e ellos pue"e car ar el nom)re "e arc&ivo especi!ica"o/ el arc&ivo se car a con 7ue PHPExcel'Oea"er'.Oea"er. mo"o expl:cito re7uiere 7ue se especi!i7ue 7ue PHPExcel'Oea"er'.Oea"er "e)e ser utili(a"o. Pue"e crear una instancia "e PHPExcel'Oea"er'.Oea"er utili(an"o PHPExcel'.2Jactor- en el tipo "e arc&ivo autom3tico "e resolver el mo"o "e utili(ar el e0emplo "e c%"i o#

$objPHPExcel'<'PHPExcel_I4=acto$-::loa((/6O&eat%$e(e,o*xlsx/);

<n uso t:pico "e esta !unci%n es cuan"o se necesita para leer los arc&ivos su)i"os por los usuarios/ no sK si se est3 car an"o xls o xlsx. 9i es necesario esta)lecer al unas propie"a"es en el lector ,por e0emplo/ para leer s%lo los "atos/ ver m3s so)re esto m3s a"elante+/ entonces en ve( 7ue "esee utili(ar esta variante#
$objRea(e$'<'PHPExcel_I4=acto$-::c$eateRea(e$=o$=ile(/6O&eat%$e(e,o*xlsx/); $objRea(e$ !setRea(9ata4nl-(t$%e); $objRea(e$ !loa((/6O&eat%$e(e,o*xlsx/);

Pue"e crear una instancia "e PHPExcel'Oea"er'.Oea"er utili(an"o PHPExcel'.2Jactor- en mo"o expl:cito con el si uiente e0emplo "e c%"i o#
$objRea(e$'<'PHPExcel_I4=acto$-::c$eateRea(e$(/Excel5667/); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*xlsx/);

PHPExcel Developer Documentation

4$

>en a en cuenta 7ue el mo"o autom3tico "e tipo "e resoluci%n es li eramente m3s lento 7ue el mo"o expl:cito.

,.1.2.

*rear P$PE%celABriterA(Briter utili7ando P$PE%celA(&"actory

Pue"e crear una instancia "e PHPExcel'Lriter'.writer utili(an"o PHPExcel'.2Jactor-#


$objG$ite$'<'PHPExcel_I4=acto$-::c$eateG$ite$($objPHPExcel:'/Excel5667/); $objG$ite$ !sa"e(/6O&eat%$e(e,o*xlsx/);

,.2.

E%cel 2<<8 3Cpreadsheet.L6 ormato de archivo

Excel2007 !ormato "e arc&ivo es el !ormato "e arc&ivo principal "e PHPExcel. Permite la sali"a "e la &o0a "e c3lculo en la memoria a un arc&ivo xlsx..

,.2.1.

P$PE%celAReaderAE%cel2<<8

Lectura de una !o&a de c7lculo


<ste" pue"e leer un c%"i o "e xlsx. Arc&ivo con lo si uiente#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_Excel5667(); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*xlsx/);

los datos de slo lectura


Pue"e con!i urar la opci%n setOea"Data2nl- en el lector/ para instruir al lector a pasar por alto el estilo/ la vali"aci%n "e "atos/ ... - aca)a "e leer "atos "e la cel"a#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_Excel5667(); $objRea(e$ !setRea(9ata4nl-(t$%e); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*xlsx/);

espec6%icas de las !o&as de slo lectura


Pue"e con!i urar la opci%n set5oa"9&eets2nl- en el lector/ para instruir al lector para car ar s%lo las &o0as con un nom)re 7ue se "a#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_Excel5667(); $objRea(e$ !setLoa(S#eets4nl-('a$$a-(/S#eet'A/:'/0-'special's#eet/)'); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*xlsx/);

espec6%icas de las c2lulas de slo lectura

Pue"e esta)lecer la opci%n setOea"Jilter en el lector/ para instruir al lector para car ar s%lo las cel"as 7ue coinci"en con una re la "a"a. <na lectura "el !iltro pue"e ser cual7uier clase 7ue implementa PHPExcel'Oea"er'.Oea"Jilter. Por "e!ecto/ to"as las cel"as se leen utili(an"o la PHPExcel'Oea"er'De!aultOea"Jilter. El si uiente c%"i o s%lo leer3 la !ila 1 - las !ilas 20 a 30 "e cual7uier &o0a en el arc&ivo "e Excel#

PHPExcel Developer Documentation

4H

class'0-Rea(=ilte$'i,ple,ents'PHPExcel_Rea(e$_IRea(=ilte$ ) p%blic'&%nction'$ea(Cell($col%,n:'$$o2:'$2o$Hs#eetVa,e'<'..)') EE'Rea('title'$o2'an('$o2s'56' 'U6 i&'($$o2'<<'A'kk'($$o2'!<'56'bb'$$o2'D<'U6))') $et%$n't$%e; + $et%$n'&alse; + + $objRea(e$'<'ne2'PHPExcel_Rea(e$_Excel5667(); $objRea(e$ !setRea(=ilte$('ne2'0-Rea(=ilte$()'); $objPHPExcel'<'$objRea(e$ !loa((/6@la$gescale*xlsx/);

,.2.2.

P$PE%celABriterAE%cel2<<8

Escri$ir una !o&a de c7lculo


<ste" pue"e escri)ir un c%"i o xlsx. Arc&ivo con lo si uiente#
$objG$ite$'<'ne2'PHPExcel_G$ite$_Excel5667($objPHPExcel); $objG$ite$ !sa"e(/6O&eat%$e(e,o*xlsx/);

Formula preGcalculation
De !orma pre"etermina"a/ este escritor preBcalcula to"as las !%rmulas "e la &o0a "e c3lculo. Esto pue"e ser lento en ran"es &o0as "e c3lculo/ - tal ve( no "esea"os/ incluso. Pue"e "esactivar la !%rmula sin em)ar o antes "e c3lculo#
$objG$ite$'<'ne2'PHPExcel_G$ite$_Excel5667($objPHPExcel); $objG$ite$ !setP$eCalc%late=o$,%las(&alse); $objG$ite$ !sa"e(/6O&eat%$e(e,o*xlsx/);

Pa"uete de compati$ilidad de O%%ice 2**3


De)i"o a un )u en el pa7uete "e compati)ili"a" 2!!ice2003/ pue"e &a)er al unos pe7ue?os pro)lemas al a)rir excel2007 &o0as "e c3lculo ,en su ma-or:a relaciona"os con c3lculo "e la !%rmula+. Pue"e permitir la compati)ili"a" 2!!ice2003 con el si uiente c%"i o#
$objG$ite$'<'ne2'PHPExcel_G$ite$_Excel5667($objPHPExcel); $objG$ite$ !set4&&ice566UCo,patibilit-(t$%e); $objG$ite$ !sa"e(/6O&eat%$e(e,o*xlsx/);

compati)ili"a" 2!!ice2003 s%lo "e)e utili(arse cuan"o sea necesario

opci%n "e compati)ili"a" 2!!ice2003 s%lo "e)e utili(arse cuan"o sea necesario. Esta opci%n "es&a)ilita varias opciones "e !ormato "e arc&ivo 2!!ice2007/ resultan"o en una )a0a "e !unciones 2!!ice2007 &o0a "e c3lculo cuan"o se utili(a esta opci%n.

,.3.

E%cel ! 3D(""6 ormato de archivo

arc&ivo en !ormato Excel$ es el anti uo arc&ivo en !ormato Excel/ implementa"o en PHPExcel para proporcionar "e manera uni!orme para crear am)os. xlsx -. xls. Es )3sicamente una versi%n mo"i!ica"a "e PEOA 9prea"s&eet'Excel'Lriter / - tiene las mismas limitaciones - caracter:sticas como la )i)lioteca PEAO.

PHPExcel Developer Documentation

47

Excel$ !ile !ormat will not )e "evelope" an- !urt&er/ it 0ust provi"es an a""itional !ile !ormat !or PHPExcel. 5:/@3?0 81 I0:9520 EG/8=# 10 78 >875::0==5:A 9A7 =8;07. 76=0 <:0<0:/3015 41

I0:9520 >8 5:/@3?0 5>3/3015=87 <5:5 PHPEG/8=.

Excel$ ,B.JJ+ limitations Excel$ ,B.JJ+ limitaciones

>en a en cuenta 7ue arc&ivo en !ormato B.JJ. tiene al unos l:mites en cuanto a las cKlulas "e estilo - mane0o "e ran"es &o0as "e c3lculo a travKs "e PHP.

,.3.1.

P$PE%celAReaderAE%cel!

Lectura de una !o&a de c7lculo


<ste" pue"e leer el c%"i o. 1ls con lo si uiente#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_ExcelO(); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*xls/);

los datos de slo lectura


Pue"e con!i urar la opci%n setOea"Data2nl- en el lector/ para instruir al lector a pasar por alto el estilo/ la vali"aci%n "e "atos/ ... - aca)a "e leer "atos "e la cel"a#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_ExcelO(); $objRea(e$ !setRea(9ata4nl-(t$%e); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*xls/);

espec6%icas de las !o&as de slo lectura


Pue"e con!i urar la opci%n set5oa"9&eets2nl- en el lector/ para instruir al lector para car ar s%lo las &o0as con un nom)re 7ue se "a#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_ExcelO(); $objRea(e$ !setLoa(S#eets4nl-('a$$a-(/S#eet'A/:'/0-'special's#eet/)'); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*xls/);

espec6%icas de las c2lulas de slo lectura


Pue"e esta)lecer la opci%n setOea"Jilter en el lector/ para instruir al lector para car ar s%lo las cel"as 7ue coinci"en con una re la "a"a. <na lectura "el !iltro pue"e ser cual7uier clase 7ue implementa PHPExcel'Oea"er'.Oea"Jilter. Por "e!ecto/ to"as las cel"as se leen utili(an"o la PHPExcel'Oea"er'De!aultOea"Jilter. El si uiente c%"i o s%lo leer3 la !ila 1 - las !ilas 20 a 30 "e cual7uier &o0a en el arc&ivo "e Excel#
class'0-Rea(=ilte$'i,ple,ents'PHPExcel_Rea(e$_IRea(=ilte$ ) p%blic'&%nction'$ea(Cell($col%,n:'$$o2:'$2o$Hs#eetVa,e'<'..)') EE'Rea('title'$o2'an('$o2s'56' 'U6 i&'($$o2'<<'A'kk'($$o2'!<'56'bb'$$o2'D<'U6))') $et%$n't$%e; + $et%$n'&alse; +

PHPExcel Developer Documentation

4G

+ $objRea(e$'<'ne2'PHPExcel_Rea(e$_ExcelO(); $objRea(e$ !setRea(=ilte$('ne2'0-Rea(=ilte$()'); $objPHPExcel'<'$objRea(e$ !loa((/6@la$gescale*xls/);

,.3.2.

P$PE%celABriterAE%cel!

Escri$ir una !o&a de c7lculo


<ste" pue"e escri)ir un c%"i o. 1ls con lo si uiente#
$objG$ite$'<'ne2'PHPExcel_G$ite$_ExcelO($objPHPExcel); $objG$ite$ !sa"e(/6O&eat%$e(e,o*xls/);

,.#.

E%cel 2<<3 "ormato de archivo E.L

Excel 2003 !ormato "e arc&ivo 1M5 es un !ormato "e arc&ivo 7ue pue"e ser utili(a"o en las versiones anteriores "e Microso!t Excel.

Excel 200A )*+ li&itaciones >en a en cuenta 7ue Excel 2003 en !ormato 1M5 tiene al unas limitaciones con respecto a las cKlulas "e estilo - mane0o "e ran"es &o0as "e c3lculo a travKs "e PHP.

,.#.1.

P$PE%celAReaderAE%cel2<<3E.L

Lectura de una !o&a de c7lculo


<ste" pue"e leer el c%"i o 1M5. Arc&ivo con lo si uiente#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_Excel566U80L(); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*x,l/);

espec6%icas de las c2lulas de slo lectura


Pue"e esta)lecer la opci%n setOea"Jilter en el lector/ para instruir al lector para car ar s%lo las cel"as 7ue coinci"en con una re la "a"a. <na lectura "el !iltro pue"e ser cual7uier clase 7ue implementa PHPExcel'Oea"er'.Oea"Jilter. Por "e!ecto/ to"as las cel"as se leen utili(an"o la PHPExcel'Oea"er'De!aultOea"Jilter. El si uiente c%"i o s%lo leer3 la !ila 1 - las !ilas 20 a 30 "e cual7uier &o0a en el arc&ivo "e Excel#

class'0-Rea(=ilte$'i,ple,ents'PHPExcel_Rea(e$_IRea(=ilte$ ) p%blic'&%nction'$ea(Cell($col%,n:'$$o2:'$2o$Hs#eetVa,e'<'..)') EE'Rea('title'$o2'an('$o2s'56' 'U6 i&'($$o2'<<'A'kk'($$o2'!<'56'bb'$$o2'D<'U6))') $et%$n't$%e; + $et%$n'&alse; +

PHPExcel Developer Documentation

4D

+ $objRea(e$'<'ne2'PHPExcel_Rea(e$_Excel566U80L(); $objRea(e$ !setRea(=ilte$('ne2'0-Rea(=ilte$()'); $objPHPExcel'<'$objRea(e$ !loa((/6@la$gescale*x,l/);

,.!.

Enlace sim+lico 3CFLG6

Enlace sim)%lico ,9N5R+ es un !ormato "e arc&ivo "e Microso!t suele utili(ar para el intercam)io "e "atos entre aplicaciones/ especialmente las &o0as "e c3lculo. 4ompuesto por A@9. caracteres 7ue pue"en visuali(arse solamente/ 7ue pue"e ser !3cilmente crea"os - procesa"os por otras aplicaciones/ como )ases "e "atos.

9N5R limitaciones

>en a en cuenta 7ue arc&ivo en !ormato 9N5R tiene al unos l:mites en cuanto a las cKlulas "e estilo - mane0o "e ran"es &o0as "e c3lculo a travKs "e PHP.

,.!.1.

P$PE%celAReaderACFLG

Lectura de una !o&a de c7lculo


<ste" pue"e leer un c%"i o "e slC. Arc&ivo con lo si uiente#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_SWL;(); $objPHPExcel'<'$objRea(e$ !loa((/6O&eat%$e(e,o*slH/);

espec6%icas de las c2lulas de slo lectura


Pue"e esta)lecer la opci%n setOea"Jilter en el lector/ para instruir al lector para car ar s%lo las cel"as 7ue coinci"en con una re la "a"a. <na lectura "el !iltro pue"e ser cual7uier clase 7ue implementa PHPExcel'Oea"er'.Oea"Jilter. Por "e!ecto/ to"as las cel"as se leen utili(an"o la PHPExcel'Oea"er'De!aultOea"Jilter. El si uiente c%"i o s%lo leer3 la !ila 1 - las !ilas 20 a 30 "e cual7uier &o0a en el arc&ivo 9N5R#
class'0-Rea(=ilte$'i,ple,ents'PHPExcel_Rea(e$_IRea(=ilte$ ) p%blic'&%nction'$ea(Cell($col%,n:'$$o2:'$2o$Hs#eetVa,e'<'..)') EE'Rea('title'$o2'an('$o2s'56' 'U6 i&'($$o2'<<'A'kk'($$o2'!<'56'bb'$$o2'D<'U6))') $et%$n't$%e; + $et%$n'&alse; + + $objRea(e$'<'ne2'PHPExcel_Rea(e$_SWL;(); $objRea(e$ !setRea(=ilte$('ne2'0-Rea(=ilte$()'); $objPHPExcel'<'$objRea(e$ !loa((/6@la$gescale*slH/);

,.,.

*CH 3valores separados por comas6

498 ,valores separa"os por comas+ se utili(an a menu"o como una importaci%n ; !ormato "e arc&ivo "e exportaci%n con otros sistemas. PHPExcel allows rea"in an" writin to 498 !iles. PHPExcel permite leer - escri)ir en arc&ivos 498.

PHPExcel Developer Documentation

$0

#BV li&itaciones >en a en cuenta 7ue arc&ivo en !ormato 498 tiene al unos l:mites en cuanto a las cKlulas "e estilo/ !ormato "e nAmero/ ...

,.,.1.

P$PE%celAReaderA*CH

Lectura de un arc!i)o C H
<ste" pue"e leer un c%"i o. 4sv arc&ivo con lo si uiente#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_CSV(); $objPHPExcel'<'$objRea(e$ !loa((/sa,ple*cs"/);

Marco C H opciones
A menu"o/ los arc&ivos 498 no son realmente =separa"os por comas=/ o punto - coma uso ,^+ como separa"or. Pue"e in"icar PHPExcel'Oea"er'498 al unas opciones antes "e leer un arc&ivo 498. >en a en cuenta 7ue PHPExcel'Oea"er'498 por "e!ecto asume 7ue la car a "el arc&ivo 498 es co"i!icaci%n <>JBG. 9i uste" est3 le-en"o arc&ivos 498 7ue !ueron crea"os en Microso!t 2!!ice Excel la co"i!icaci%n "e entra"a correcta - no pue"e ser Lin"owsB12$2 ,4P12$2+. Ase Arese siempre "e 7ue la co"i!icaci%n "e entra"a "e un valor apropia"o.
$objRea(e$'<'ne2'PHPExcel_Rea(e$_CSV(); $objRea(e$ !setInp%tEnco(ing(.CPA5O5.); $objRea(e$ !set9eli,ite$(.;.); $objRea(e$ !setEnclos%$e(..); $objRea(e$ !setLineEn(ing(/F$Fn/); $objRea(e$ !setS#eetIn(ex(6); $objPHPExcel'<'$objRea(e$ !loa((/sa,ple*cs"/);

Leer una !o&a de c7lculo espec6%ica


arc&ivos 498 s%lo pue"e contener una &o0a "e c3lculo. Por lo tanto/ pue"e especi!icar 7ue la &o0a para leer "es"e 498#
$objRea(e$ !setS#eetIn(ex(6);

Lea en la !o&a de c7lculo existentes


4uan"o se tra)a0a con arc&ivos 498/ pue"e ocurrir 7ue "esea importar "atos 498 en un o)0eto existente PHPExcel. El si uiente c%"i o car a un arc&ivo 498 en "%lares actuales o)0PHPExcel contiene al unas &o0as/ - las importaciones en la &o0a H s#
$objRea(e$'<'ne2'PHPExcel_Rea(e$_CSV(); $objRea(e$ !set9eli,ite$(.;.); $objRea(e$ !setEnclos%$e(..); $objRea(e$ !setLineEn(ing(/F$Fn/); $objRea(e$ !setS#eetIn(ex(O);' $objRea(e$ !loa(IntoExisting(/6O&eat%$e(e,o*cs"/:'$objPHPExcel);

PHPExcel Developer Documentation

$1

B.B.2.

PHPExcel-.riter-C H

Creacin de un arc!i)o C H
<ste" pue"e escri)ir un c%"i o csv. Arc&ivo con lo si uiente#
$objG$ite$'<'ne2'PHPExcel_G$ite$_CSV($objPHPExcel); $objG$ite$ !sa"e(/6O&eat%$e(e,o*cs"/);

Marco C H opciones
A menu"o/ los arc&ivos 498 no son realmente =separa"os por comas=/ o punto - coma uso ,^+ como separa"or. Pue"e in"icar PHPExcel'Lriter'498 al unas opciones antes "e escri)ir un arc&ivo 498#
$objG$ite$'<'ne2'PHPExcel_G$ite$_CSV($objPHPExcel); $objG$ite$ !set9eli,ite$(.;.); $objG$ite$ !setEnclos%$e(..); $objG$ite$ !setLineEn(ing(/F$Fn/); $objG$ite$ !setS#eetIn(ex(6); $objG$ite$ !sa"e(/6O&eat%$e(e,o*cs"/);

Escri$ir una !o&a de c7lculo espec6%ica


arc&ivos 498 s%lo pue"e contener una &o0a "e c3lculo. Por lo tanto/ pue"e especi!icar 7uK &o0a para escri)ir a un arc&ivo 498#
$objG$ite$ !setS#eetIn(ex(6);

Frmula preGc7lculo
De !orma pre"etermina"a/ este escritor preBcalcula to"as las !%rmulas "e la &o0a "e c3lculo. Esto pue"e ser lento en ran"es &o0as "e c3lculo/ - tal ve( no "esea"os/ incluso. Pue"e "esactivar la !%rmula sin em)ar o antes "e c3lculo#
$objG$ite$'<'ne2'PHPExcel_G$ite$_CSV($objPHPExcel); $objG$ite$ !setP$eCalc%late=o$,%las(&alse); $objG$ite$ !sa"e(/6O&eat%$e(e,o*cs"/);

Escri$ir D>FGC arc!i)os C H


<n arc&ivo 498 se pue"en marcar como <>JBG por escri)ir un enca)e(a"o "el arc&ivo "e lista "e materiales. Esto se pue"e activar me"iante el si uiente c%"i o#
$objG$ite$'<'ne2'PHPExcel_G$ite$_CSV($objPHPExcel); $objG$ite$ !setCse140(t$%e); $objG$ite$ !sa"e(/6O&eat%$e(e,o*cs"/);

Decimal # separadores de miles

9i la &o0a "e c3lculo 7ue est3 exportan"o contiene nAmeros con separa"ores "e miles o "ecimales/ entonces "e)er:a pensar en lo 7ue los caracteres 7ue "esea utili(ar para los 7ue antes "e reali(ar la exportaci%n. De !orma pre"etermina"a PHPExcel )usca en la con!i uraci%n re ional "e la con!i uraci%n "el servi"or para "eci"ir 7uK caracteres a usar. Pero para evitar pro)lemas se recomien"a !i0ar los caracteres "e !orma expl:cita como se muestra a continuaci%n.

PHPExcel Developer Documentation

$2

<suarios .n lKs ten"r3 7ue usar esto antes "e &acer la exportaci%n#
$eK%i$e_once'.PHPExcelES#a$e(ESt$ing*p#p. PHPExcel_S#a$e(_St$ing::set9eci,alSepa$ato$(.*.); PHPExcel_S#a$e(_St$ing::set3#o%san(sSepa$ato$(.:.);

usuarios alemanes 7uerr3n utili(ar los valores opuestos.


$eK%i$e_once'.PHPExcelES#a$e(ESt$ing*p#p. PHPExcel_S#a$e(_St$ing::set9eci,alSepa$ato$(.:.); PHPExcel_S#a$e(_St$ing::set3#o%san(sSepa$ato$(.*.);

>en a en cuenta 7ue el c%"i o anterior esta)lece - mil separa"ores "ecimales como opciones lo)ales. Esto tam)iKn a!ecta la !orma en H>M5 - PDJ se exporta.

(.).

H*+L

PHPExcel le permite escri)ir una &o0a "e c3lculo en !ormato H>M5/ para la representaci%n r3pi"a "e los "atos en ella a cual7uier persona 7ue no tiene una &o0a "e c3lculo en su P4.

H:*+ li&itaciones >en a en cuenta 7ue arc&ivo en !ormato H>M5 tiene ciertos l:mites con respecto a las cKlulas "e estilo/ !ormato "e nAmero/ ...

B.+.1.

PHPExcel-.riter-H>ML

>en a en cuenta 7ue s%lo PHPExcel'Lriter'H>M5 salir la primera &o0a "e c3lculo "e !orma pre"etermina"a.

Escri$ir una !o&a de c7lculo


<ste" pue"e escri)ir un c%"i o &tm. Arc&ivo con lo si uiente#
$objG$ite$'<'ne2'PHPExcel_G$ite$_H30L($objPHPExcel); $objG$ite$ !sa"e(/6O&eat%$e(e,o*#t,/);

Escri$e todas las !o&as


5os arc&ivos H>M5 pue"en contener una o m3s &o0as "e c3lculo. 9i "esea escri)ir to"as las &o0as en un Anico arc&ivo H>M5/ utilice el si uiente c%"i o#
$objG$ite$ !2$iteAllS#eets();

Escri$ir una !o&a de c7lculo espec6%ica


5os arc&ivos H>M5 pue"en contener una o m3s &o0as "e c3lculo. Por lo tanto/ pue"e especi!icar 7uK &o0a "e escri)ir en H>M5#
$objG$ite$ !setS#eetIn(ex(6);

Marco de las im7,enes ra65 del arc!i)o H>ML


Pue"e &a)er situaciones en las 7ue "esea esta)lecer expl:citamente las im3 enes ra:( inclui"a. Por e0emplo/ uno po"r:a 7uerer ver el estilo'Di,g'<'/position:'$elati"e;'i>K%ie$(a:' 6px;'top:'6px;'anc#o:'AR6px;'#eig#t:'7?px;/'s$c'<'/i,Lgenes' http://www.domain.com/'E'logotipo'*'jpg'/bo$(e$'</'6'/!'en lu ar "e estilo'

PHPExcel Developer Documentation

$3

Di,g'</'position:'$elati"e;'i>K%ie$(a:'6px;'top:'6px;'anc#o:'AR6px;' alt%$a:;'/s$c'</*'7?px'E'i,ages'E'logo*jpg'/bo$(e$'<'=0=`. <ste" pue"e utili(ar el c%"i o si uiente para lo rar este resulta"o#
$objG$ite$ !setI,agesRoot(.#ttp:EE222*exa,ple*co,.);

Formula preGcalculation
De !orma pre"etermina"a/ este escritor preBcalcula to"as las !%rmulas "e la &o0a "e c3lculoEsto pue"e ser lento en ran"es &o0as "e c3lculo/ - tal ve( no "esea"os/ incluso. Pue"e "esactivar la !%rmula sin em)ar o antes "e c3lculo#
$objG$ite$'<'ne2'PHPExcel_G$ite$_H30L($objPHPExcel); $objG$ite$ !setP$eCalc%late=o$,%las(&alse); $objG$ite$ !sa"e(/6O&eat%$e(e,o*#t,/);

Incrustacin de cdi,o H>ML ,enerado en una p7,ina /e$

Po"r:a &a)er una situaci%n en la 7ue "esea incrustar el c%"i o H>M5 enera"o en un sitio we) existente. PHPExcel'Lriter'H>M5 proporciona apo-o para enerar s%lo las partes espec:!icas "el c%"i o H>M5/ 7ue permite el uso "e estas pie(as en su sitio we). 9upporte" met&o"s# mKto"os compati)les# enerateH>M5Hea"er,+ enerate9t-les,+ enerate9&eetData,+ enerateH>M5Jooter,+

He a7u: un e0emplo 7ue recupera to"as las partes "e !orma in"epen"iente - los com)ina en una p3 ina H>M5 resultante#

DIp#p $objG$ite$'<'ne2'PHPExcel_G$ite$_H30L($objPHPExcel); ec#o'$objG$ite$ !gene$ateH30LHea(e$(); I! Dst-le! DB #t,l') ''&ont &a,il-:'3i,es'Ve2'Ro,an; ''&ont si>e:'Tpt; ''bacHg$o%n( colo$:'2#ite; + DIp#p ec#o'$objG$ite$ !gene$ateSt-les(&alse);'EE'(o'not'2$ite'Dst-le!'an('DEst-le! I! ! DEst-le! DIp#p ec#o'$objG$ite$ !gene$ateS#eet9ata(); ec#o'$objG$ite$ !gene$ateH30L=oote$(); I!

PHPExcel Developer Documentation

$4

Escri$ir D>FGC arc!i)os H>ML


<n arc&ivo H>M5 se pue"en marcar como <>JBG por escri)ir un enca)e(a"o "el arc&ivo "e lista "e materiales. Esto se pue"e activar me"iante el si uiente c%"i o#
$objG$ite$'<'ne2'PHPExcel_G$ite$_H30L($objPHPExcel); $objG$ite$ !setCse140(t$%e); $objG$ite$ !sa"e(/6O&eat%$e(e,o*#t,/);

Decimal # separadores de miles


8ea la secci%n PHPExcel'Lriter'498 c%mo controlar la aparici%n "e estos.

(.,.

-./

PHPExcel le permite escri)ir una &o0a "e c3lculo en !ormato PDJ/ para la "istri)uci%n r3pi"a "e los "atos representa"os.

PD1 li&itaciones >en a en cuenta 7ue arc&ivo en !ormato PDJ tiene al unas limitaciones con respecto a las cKlulas "e estilo/ !ormato "e nAmero/ ...

B.C.1.

PHPExcel-.riter-PDF

>en a en cuenta 7ue s%lo PHPExcel'Lriter'PDJ salir la primera &o0a "e c3lculo "e !orma pre"etermina"a.

Escri$ir una !o&a de c7lculo


<ste" pue"e escri)ir un c%"i o p"!. Arc&ivo con lo si uiente#
$objG$ite$'<'ne2'PHPExcel_G$ite$_P9=($objPHPExcel); $objG$ite$ !sa"e(/6O&eat%$e(e,o*p(&/);

Escri$e todas las !o&as


5os arc&ivos PDJ pue"en contener una o m3s &o0as "e c3lculo. 9i "esea escri)ir to"as las &o0as en un Anico arc&ivo PDJ/ utilice el si uiente c%"i o#
$objG$ite$ !2$iteAllS#eets();

Escri$ir una !o&a de c7lculo espec6%ica


5os arc&ivos PDJ pue"en contener una o m3s &o0as "e c3lculo. Por lo tanto/ pue"e especi!icar 7uK &o0a para escri)ir en PDJ#
$objG$ite$ !setS#eetIn(ex(6);

Formula preGcalculation
De !orma pre"etermina"a/ este escritor preBcalcula to"as las !%rmulas "e la &o0a "e c3lculo. Esto pue"e ser lento en ran"es &o0as "e c3lculo/ - tal ve( no "esea"os/ incluso Pue"e "esactivar la !%rmula sin em)ar o antes "e c3lculo#

PHPExcel Developer Documentation

$$

$objG$ite$'<'ne2'PHPExcel_G$ite$_P9=($objPHPExcel); $objG$ite$ !setP$eCalc%late=o$,%las(&alse); $objG$ite$ !sa"e(/6O&eat%$e(e,o*p(&/);

Decimal # separadores de miles


8ea la secci%n PHPExcel'Lriter'498 c%mo controlar la aparici%n "e estos.

,.:. ?eneracin de archivos de E%cel a partir de plantillas 3leerI modi icar y escri+ir6
5os lectores - los escritores son las &erramientas 7ue le permiten enerar arc&ivos "e Excel a partir "e plantillas. >&is re7uires less co"in e!!ort t&an eneratin t&e Excel !ile !rom scratc&/ especialli! -our template &as man- st-les/ pa e setup properties/ &ea"ers etc. Esto re7uiere menos es!uer(o "e co"i!icaci%n 7ue enerar el arc&ivo "e Excel "es"e cero/ so)re to"o si la plantilla tiene muc&os estilos/ las propie"a"es "e con!i uraci%n "e p3 ina/ enca)e(a"os/ etc He a7u: un e0emplo "e c%mo a)rir un arc&ivo "e plantilla/ rellenar un par "e campos - uar"arlo "e nuevo#
$objPHPexcel'<'PHPExcel_I4=acto$-::loa((.te,plate*xlsx.); $objGo$Hs#eet'<'$objPHPexcel !getActi"eS#eet(); $objGo$Hs#eet !getCell(.AA.) !setVal%e(.jo#n.); $objGo$Hs#eet !getCell(.A5.) !setVal%e(.S,it#.); $objG$ite$'<'PHPExcel_I4=acto$-::c$eateG$ite$($objPHPexcel:'.ExcelO.); $objG$ite$ !sa"e(.2$ite*xls.);

>en a en cuenta 7ue se pue"e car ar un arc&ivo xlsx - enerar un arc&ivo xls. 4.

Cr2ditos

Please re!er to t&e internet pa e &ttp#;;www.co"eplex.com;PHPExcel;LiCi;8iew.aspxE titleF4re"itsIre!errin >itleFHome !or upBtoB"ate cre"its. Por !avor/ consulte la p3 ina "e .nternet &ttp#;;www.co"eplex.com;PHPExcel;LiCi;8iew.aspxEtitleF4re"itsIre!errin >itleFHome para actuali(ar la !ec&a "e crK"itos.

PHPExcel Developer Documentation

$H

8.

*r'ditos

Por !avor/ consulte la p3 ina "e .nternet &ttp#;;www.co"eplex.com;PHPExcel;LiCi;8iew.aspxE titleF4re"itsIre!errin >itleFHome para actuali(ar la !ec&a "e crK"itos.

PHPExcel Developer Documentation

$7

(ppendix (0 Cla)es )7lidas de matri5 de

appl#From(rra# para estilo 34


En la ta)la si uiente se muestran las claves "e matri( v3li"a para appl-JromArra- PHPExcel'9t-le ,+ clases. 9i el =mapa "e la propie"a"= columna se asi na una clave a una incu)a"ora/ el valor proporciona"o para esa clave se pue"e aplicar "irectamente. 9i el =mapa "e la propie"a"= columna se asi na una clave a un compra"or/ el valor proporciona"o para esa clave se aplicar3 como un con0unto "e estilo. PHPExcel_Bt/le Arra- Ce-# !ill !ont )or"ers ali nment num)er!ormat protection PHPExcel_Bt/le_1ill Arra- Ce-# t-pe rotation startcolor en"color color PHPExcel_Bt/le_1ont Arra- Ce-# name )ol" italic un"erline striCe color si(e super9cript su)9cript PHPExcel_Bt/le_Forders Arra- Ce-# all)or"ers le!t ri &t top )ottom "ia onal vertical &ori(ontal "ia onal"irection outline PHPExcel_Bt/le_Forder Arra- Ce-# st-le color Maps to propert-# etJill,+ etJont,+ etBor"ers,+ etAli nment,+ et@um)erJormat,+ etProtection,+ Maps to propert-# setJill>-pe,+ setOotation,+ et9tart4olor,+ etEn"4olor,+ et9tart4olor,+ Maps to propert-# set@ame,+ setBol",+ set.talic,+ set<n"erline,+ set9triCet&rou &,+ et4olor,+ set9i(e,+ set9uper9cript,+ set9u)9cript,+ Maps to propert-# et5e!t,+^ etOi &t,+^ et>op,+^ etBottom,+ et5e!t,+ etOi &t,+ et>op,+ etBottom,+ etDia onal,+ et8ertical,+ etHori(ontal,+ setDia onalDirection,+ set2utline,+ Maps to propert-# setBor"er9t-le,+ et4olor,+

PHPExcel Developer Documentation

$G

PHPExcel_Bt/le_Ali3n&ent Arra- Ce-# &ori(ontal vertical rotation wrap s&rinC>oJit in"ent PHPExcel_Bt/le_Iu&-er1or&at Arra- Ce-# co"e PHPExcel_Bt/le_Protection Arra- Ce-# locCe" &i""en

Maps to propert-# setHori(ontal,+ set8ertical,+ set>extOotation,+ setLrap>ext,+ set9&rinC>oJit,+ set.n"ent,+ Maps to propert-# setJormat4o"e,+ Maps to propert-# set5ocCe",+ setHi""en,+

PHPExcel Developer Documentation

$D

También podría gustarte