Está en la página 1de 23

c cc

c
 c c 

Ô     
       
            

Ô             
    

      

             
   



           
  !           
"      #

   

     $

  %  &
  % &
  % &
  % &
  %&
  %  &

''(         '
    "#$
þ

 % )  "#$
   &
þ

   )  "%  #$
  *  &
þ

 % !"#$
  &
þ

   !"% #$
 * &
þ

 %  "#$
  &
þ

    "% #$
 * &
þ

 % !"#$
  &
þ

   !"% #$
 * &
þ

 % ("#$
 &
þ

   ("%#$
*&
þ

 % ! "#$
   &
þ

   ! "%  #$
  *  &
þ

þ

       


     ( +  &
  , ),
 &
  -.
 &
   ! /&
   -  &
 
0.Ô  &


     $


 ! /   
"%  #$

! /   * ! /"#&

( +    * &

$

  * ( +  "  1&1#&

þ ", ),
 
#$

% 23  "#&
0.Ô  -4 "5    5#&
þ

$

   6  "#&

þ "-.
 
#$

% 23  "#&
þ

$

   &

 "   + "##
$

*    "#&
 )  "   "5  5##&
 !"   "5 5##&
  "   "5 5##&
 !"   "5 5##&
 ("   "55##&
 ! "   "5  5##&
   " #&        /

þ

þ "-.
 
#$

% 23  "#&
%   "5    5#&
þ

    "#&

    &     ! /

þ


þ




    0, (   
            
        





 


4   3  7  &
! /   * ! /"#&

0, (  ( * 0, ( "55#&
 * ( . 4 " #& ( 

" **0, ( !ÔÔ+.8 .Ô3-.)#$

,   , * (  %  , "#&

   *    "#&
% *  ,  Ô  "#9559  ,  ) "#&

  *    
" #&
-  *     "#&

$

.  :;* . :<;&
 *"4   3  7 #3  = 7 "#&
"*3  = +("#>=&?*@&>>#
$
   +"#&
þ


 " )
"##$

   &
*"   #
"#&
 :@;*  )  "#&
 :=;*  !"#&
 :A;*   "#&
 :B;*  !"#&
 :C;*  ("#&
 :D;*  ! "#&

  +" #&
þ

þ "
  #$
    
þ

þ  " **0, ( (!)( /.Ô3-.)#$

%  "5  5#&

þ



  2   

p
¢   
   

± 

ï  p p  
 p  p

En este ejemplo vamos a m   


 m    usando la librería . Para
ello, lo primero es descargarse la librería  desde su página de descargas
http://www.apache.org/dyn/closer.cgi/poi/

Una vez descargada y desempaquetada, tendremos una serie de jars que deberemos añadir a
nuestro proyecto Java o a nuestro CLASSPATH. En el momento de escribir este ejemplo,
los jar obtenidos eran

—p   pp
—p     pp
—p     pp

Estando todo preparado, ya podemos escribir nuestro programa Java. Lo primero de todo,
es crear lo que en Excel se conoce como un libro de trabajo (workbook). Este será nuestro
"Excel".

ß  
 ß 

Un libro de trabajo tiene hojas, así que debermos añadir al menos una hoja

ß   
    

A la hoja debemos añadirle las filas que deseemos. Para nuestro ejemplo, nos bastará con
una. La numeración empieza en cero.

ß   
   

Finalemente, a la fila debemos añadirle la celda/columna que queramos usar. Nuevamente,


el índice empieza en cero, pero esta vez admite à ort y no int.

ß   
    

Una vez que tenemos la celda, ya sólo nos resta escribir en ella lo que queramos: una
fórmula, un número, un booleano, un texto, etc. Para ello usaremos los métodos de la celda
HSSFCell. En nuestro caso y por se el más complejo, lo haremos para un String. El método
àetCellValue(String) está obsoleto, así que usaremos el método
àetCellValue(HSSFRic TextString), que vale para lo mismo pero admite un "texto rico", es
decir, con distintas fuentes.

ß      


 ß      !"  
   #"  
Listo, ya tenemos una hoja de Excel muy sencilla con un "hola mundo" en la primera celda
de la tabla. Sólo nos queda grabar el fichero. Para ello, usamos el método write() del
HSSFWorkbook

$%
  &"'"  !   
   &"'"  ! !"  
       
    
() '   %
 '   
(

m ahora el código completo para este ejemplo de Excel con Java y POI

' !"     !'' *  



!'+   &"'"  !

!'' ' " ! ß  
!'' ' " ! ß     
!'' ' " ! ß  
!'' ' " ! ß   
!'' ' " ! ß 

,--
-) !'   .! " )  /&0
-
-1""   
-
-,
'" ) !' ) %

,--
- " ) $"
-
-1'!
-,
'"  + !   23%
,,    
ß  
 ß 

,,  "    
ß   
    

,,  "    
ß   
   

,,  "     
ß   
    

,,       $ !    
ß      
 ß      !"  
   #"  

,, +  
$%
  &"'"  !   
 
  &"'"  ! !"  
       
    
() '   %
 '   
(
(
(

p

M   
   

            ! "     
  # $      ##
%


##    
#          
 $"%& '    (  
    " )
                   %* 
  + ,    "   - .   /    %

&    '   #   #   "  
)
  )          %& ' #"    
    %

0%p *       


     %

1%p *    
  #       #     %

0%p    +  2324 %%%


1%p                  
(


& )ß456578788&9:;ß456<56=787


5    
          
   -    .)     -  .)"  
  
           %

*635       
  %

7%p *   
       
 %

8%p 6       , 

9%p 4   ,          "#     


   

:%p   



      /   "

   

%

;%p      


p

p
Una libreria a la que le encontre mucho uso, y me saco de apuro en innumerables ocasiones
es Jakarta POI .

Una API de Jakarta destinada al manejo de archivos Excels. Muy sencilla de utilizar, con
mucha potencia, permite crear un nuevo archivo, leer uno ya existente, no solo crear hojas
de calculo con datos sino con formulas, formato, graficos en ella.

Vean la guia rapida para ver lo sencillo que es utilizar este libreria.


!'+ -
!'+" -
!'+ -
!'+  + -
!'+ -
!'+  -
!'+  -
!'+  + -

!'' ' " ! -
!'' '  -
!'' ' ! -
!'' ' " -
!'' ' " ! ß   $ 

'" ) !'/&0  >! %


'" ) !'/&0%
    ) !' 

>/ ' 
 >/  6 ?$"

'  / 6 86 ?$":&ß
'  / 86 ?$"):)

   / ' 

 #   " 
'
(


' + > 
' + @ " A ! 

,-
- "$  '   
-,
' + > /  / %
  23"! 
% A  8    (

& 2323
%
% )  8 7 (8
%    8 BC (8
% AD 8 7E (8
% ;  8 BF (
(

! 
 @ " A 8"! 


 > ! 

> / 
 > / 

 " 
(

,-
- "$  '    
-,
' + >/  / 6 %

>6"  )'
 >6"  )' 

)'?    
 )'?  
 )';  ?    

>/ ' 
 >/   ?$"

'  )'

 " ' 
(

'"  + !   23%
) !'/&0! 
 ) !'/&0
(



'" )'?   !' ! ;  ?  %


'" +   / ! ;  )+  %

  
!   " 
 "! 
!  "! " 

,, !  
ß  
 ß 

,, ! "8   !  ; + 
ß    7
     ; + 

 
 G  HH%

,,      "
ß   
 7    H7

 
G"! HH%

,,  "'  + 
  
!  #" ; 8  

,,      
ß   
    

,,;  ! + 
   #" 

(
(


$%

  &"'"  !  &"
   &"'"  !  !' 
      &"
  &" 

>&'  /  A  @  >! 8  ' 
  8

!'  8>&'  / 0:&A;0&:*A) ;I)

(0&) '   7%
 $ ! '   '""   
 $ ! '   7 A  
(

(

(

(
  
p

p
p

  


  p p pp

En esta página se muestra un programa java completo como ejemplo de uso de la librería
Jakarta POI. Puedes encontrar mucha más información sobre esta librería en el artículo
original que contiene este ejemplo.

p !'p+   0 '"  !p

p !'p+   &"'"  !p

p !'p+ 0&) '  p


!'p+" @ p
p
pp
!p
!'p' ' " ! ß  p
"p
!'p' ' " ! ß   $ p
#p
!'p' ' " ! ß @!p
p
!'p' ' " ! ß  p
$p
!'p' ' " ! ß   p
p !'p' ' " ! ß p
p !'p' ' '   $ !/&0   $ !p

p pp

p '" pp@ !/&0p

p %p

!p '" p p+ p!   23p


"p %p

#p    ) p

p pp
 ) p
$p
pp
p
 $ !"'   ) !'  D p
p
(p
p
pp
p
'" p p+ p   ) p
p
%p
!p
$p
"p %p

#p ,,    ) p

p ß  


 pß p

$p pp

p ,,  "  " +   p


ß    
     ß) !' p
p
pp
p
,,  "    p
p
ß   
    p
p
pp
!p
,, !  +  'p
"p
      #" 7p
#p
    7  #" 7Bp
p     B  #"   !' p

$p     C  #" " p

p pp
p ,, !"    ' $!!p

p ,,   " '.  !p


ß   $   $ 
     $ p
p
  $  @!p
p
ß @! 6"  ! ,!,$$<!! p
!p
pp
"p
ß   
    Ep
#p
   #"  p@ p
p
    $   $ p
$p
pp
!p ,,)  ! ""   ) p

!p   &"'"  !  &"


p

!p  p  &"'"  !  !' p

!p pp

!p       &"p


  &" p
!!p
(p
!"p
0&) '   p
!#p
%p
!p
 $ !"'   )       p
!$p
(p
"p (p

"p pp

"p '" p p+ p ) p

"p %p

"p $p

"!p %p
""p ,,     ) p

"#p /&0   $ !


p
 p/&0   $ !p
"p
 p  0 '"  ! <  !' p
"$p
pp
#p
,,    ) p
#p
ß  
 pß p
#p
pp
#p
,,  ' ! p
#p
ß    
    ;p
#!p
pp
#"p ,,  ' !   p

##p ß   


   p

#p pp

#$p ,,  ' ! J p

p  p
 GJ HHp
%p
p
,,    =  !p
p
ß   
    p
p
pp
p
,,     K+Lp
!p
 p 4
 "p
"p
%p
#p ,,  !' !  '   M " 'p

p     $' p

$p %p

$p  pß  )??*N/)*:9A)0<p

 $ !"'   :M! < pH


$p   :"!   #" p

$p  p


 pß  )??*N/)* 0:I<p
$p
 $ !"'    < pH
$p      #" p

$!p  p

$"p  pß  )??*N/)*6&&?);:<p

$#p  $ !"'   6  < pH


  6   #" p
$p
 p
$$p  "<p

p $ !"'   @ "< pH


  @  #" p
p
 p
p
(p
p
(p
p(p

!p(p

"p0&) '   p

#p%p

p $ !"'   )     p


(p
$p
(p
p
(p
p

p

p

p

!p
"p

#p

p

p
¢    
    
 p p#p   %p& p p   pp p p   pp

El presente tutorial espero les sirva como referencia para el uso de la librería POI. Si tienen
alguna observación y/o corrección deseo que me la hagan llegar.

Al principio, descargas los jars correspondientes a la última versión desde la web de


Apache POI (http://poi.apache.org/)

Copias los jars en la carpeta de librerías (WEB-INF/lib).

Es importante tener en cuenta que cada archivo de Excel representa un LIBRO, dentro de
cada libro tenemos HOJAS, dentro de cada HOJA tenemos FILAS, y, finalmente, en cada
FILA tenemos CELDAS. Hago mención de esto porque nos ayudará a ver cómo se
organiza la información en el archivo.

Primero, necesitamos crear un LIBRO haciendo uso de la blasé HSSFWorkbook:

,,/  ! . $  



ß 6
 ß 

« a continuación, creamos la hoja con la clase HSSFSheet

,, 

ß   7
6    7 

« luego, creamos la fila con HSSFRow

,,  


ß   
7   7

Notemos que el valor que se envía al método encargado de crear las filas es de tipo short, el
mismo que indica el número correspondiente a la fila que hemos de trabajar. El índice de
las filas empieza en ³0Ǝ, aunque ello no nos impide trabajar directamente con otras filas.

Una vez creada la fila, empezamos a trabajar con las celdas.

,,;" O"      ' !      


,,/ ! 8   !  ' "  
ß  "  
?    
"    ß 0 / 77
"    :! "  &:*;0;?
"   6 ß  6&?@)0Iß*6&?@

,,?"  !  O"   K '    
 
ß   $    
?     $ 
   ' " 
   ;  ! ß   $ ;?0I:*>9 0N
   #  ;  ! ß   $ #)0;?*&/
    "  

,,! P 8' !    
   6 6!ß   $ 6&@)*A)@09A
   6!6 Q
   6 ? ß   $ 6&@)*A)@09A
   ? 6 Q
   6  ß   $ 6&@)*A)@09A
    6 Q
   6 'ß   $ 6&@)*A)@09A
   '6 Q

,,)  !  ' !   "  
     " BB
    /  ß   $  &?0@*&)I&9:@

,, ! 8' !   $  !
,,  ' O"   K 
ß   
    
    $    
   $' ß  )??*N/)* 0:I

,, !  8   ! +
   #"  9 + 

Como podemos apreciar en el código tenemos la posibilidad de establecer estilos mediante


las clases HSSFFont y HSSFCellStyle.

La primera, nos permite establecer el tipo de fuente que se empleará para la celda que
hemos de utilizar. Para ello, contamos con los métodos àetPointHeig tInPointà que recibe
un valor de tipo short que representa el tamaño de la fuente; el método àetFontName el
mismo que recibe una constante de la misma clase que nos permite establecer la fuente que
se ha de emplear, y, otros métodos como: àetBoldweig t y àetUnderline, entre otros, que
nos permitirán aplicarle otros estilos y efectos al valor que ocupe nuestra celda.

La segunda, es la clase que, finalmente, nos ayudará a aplicar el estilo a la celda. Podemos
acomodar y alinear el texto mediante los métodos àetWrapText, àetAlignment y
àetVerticalAlignment; aplicar la fuente trabajada, con el método àetFont; configurar los
bordes mediante los métodos: àetBorderBottom, àetBorderLeft, àetBorderRig t,
àetBorderTop, para el tipo; y, àetBottomBorderColor, àetLeftBorderColor,
àetRig tBorderColor, àetTopBorderColor para establecer el color de los bordes; y,
establecer el sombreado de las celdas mediante los métodos setFillForegroundColor,
setFillBackgroundColor y setFillPattern .

Aunque, es un poco µengorroso¶ andar trabajando estos estilos, celda por celda, de esta
forma, lo mejor es encapsular todo este proceso en métodos que nos permitan ahorrar líneas
de código, preestableciendo, los estilos que se emplearán.
Según la versión de la librería que se esté empleando, podremos contar o no, con algunas
constantes para la configuración del color y el establecimiento de los sombreados. Por ello
adjunto información respecto a los colores en el anexo A y respecto a los sombreados en el
Anexo B, al final del documento.

Finalmente, volcamos nuestro libro a un archivo de la siguiente forma:

,,#! ! . "  +


 :! ; +
 <, 7 
    
   :! ; +
  &"'"  ! +  
   &"'"  !  
6    +  
 +   

A continuación les presento el código completo..

,,/  ! . $  


ß 6
 ß 

,, 
ß   7
6    7 

,,/  ! . $  
ß   
7   7

,,;" O"      ' !      
,,/ ! 8   !  ' "  
ß  "  
?    
"    ß 0 / 77
"    :! "  &:*;0;?
"   6 ß  6&?@)0Iß*6&?@

,,?"  !  O"   K '    
 
ß   $    
?     $ 
   ' " 
   ;  ! ß   $ ;?0I:*>9 0N
   #  ;  ! ß   $ #)0;?*&/
    "  

,,! P 8' !    
   6 6!ß   $ 6&@)*A)@09A
   6!6 Q
   6 ? ß   $ 6&@)*A)@09A
   ? 6 Q
   6  ß   $ 6&@)*A)@09A
    6 Q
   6 'ß   $ 6&@)*A)@09A
   '6 Q

,,)  !  ' !   "  
     " BB
    /  ß   $  &?0@*&)I&9:@

,, ! 8' !   $  !
,,  ' O"   K 
ß   
    
    $    
   $' ß  )??*N/)* 0:I

,, !  8   ! +
   #"  9 + 

,,#! ! . "  +
 :! ; +
 <, 7 
    
   :! ; +
  &"'"  ! +  
   &"'"  !  
6    +  
 +   

Aunque el ejemplo es un tanto simplón, todo lo presentado aquí generalmente se combina


con arreglos de beans y bucles, los cuales, nos ayudarán a presentar más datos en nuestras
hojas de Excel.

El objetivo de este tutorial no es mostrar todas las opciones disponibles, sino solo presentar
un pequeño caso práctico sobre el uso de HSSF (POI) para la generación de archivos en
formato Excel.

Deseo mencionar que para la creación del presente tutorial me basé en la documentación de
la página de Apache POI así como también al contenido de la página JAVA DRIVE (en
japonés).

También podría gustarte