Whats new? | Login | Parceiros
Cadastre-se | Atendimento | RSS
+ Java:
artigos   |   vídeos   |    cursos   |    mais

Como manipular arquivos Excel com Jakarta POI – Parte I

O Projeto POI é um aglomerado de APIs que tem como função manipular arquivos do tipo Microsoft OLE 2.

GLAUCIO GUERRA
Há cinco anos atuando com desenvolvimento de software, Glaucio Guerra (glaucioguerra@gmail.com) trabalha como Analista de Sistemas no ambiente Petrobras, no Rio de Janeiro, sendo bacharelando em Ciência da Computação. Atualmente, concentra seus proje...


Ver space do autor


Estatísticas:
Visualizações:
40892
Favoritado:
 8 vez(es)
Conteúdo:
Didática:
Utilidade:
18 0
votos: 21

Serviços:



como manipular arquivos excel com jakarta poi – parte i

 

o projeto poi é um aglomerado de apis que tem como função manipular arquivos do tipo microsoft ole 2. todo esse processo se dá na linguagem java, o que facilita a nossa vida de mortais programadores. no entanto, vale lamentar que, atualmente, a api não está completa para todos os formatos. somente a hssf (formato excel) disponibiliza grande parte dos comandos utilizados no excel para a manipulação de planilhas. para os outros programas, powerpoint e word, existem poucas opções de manipulação em termos de recurso. falar do projeto poi-hssf referente à leitura e escrita de arquivos excel é o tema.

 

configurando o ambiente

utilizaremos o eclipse como ide:

www.eclipse.org

 

download do jakarta poi:

http://www.apache.org/dyn/closer.cgi/jakarta/poi/

 

descompacte o arquivo poi-bin-3.0-alpha3-20061212.zip (versão com data deste artigo) e copie o arquivo poi-3.0-alpha3-20061212.jar para o classpath da sua aplicação. pronto, o ambiente já está configurado para a criação da primeira planilha.

 

da criação de uma planilha

para gerar um arquivo de planilha excel, utilizaremos a classe hssfworkbook. observe o conjunto de códigos abaixo:

 

package glaucioguerra.info.main;

 

import java.io.fileoutputstream;

import java.io.ioexception;

 

import org.apache.poi.hssf.usermodel.hssfworkbook;

 

public class main {

 

      public static void main(string[] args) throws ioexception {

            hssfworkbook wb = new hssfworkbook();

            fileoutputstream stream = new fileoutputstream("c:/planilha.xls");

            wb.write(stream);

      }

}

 

a classe workbook necessita de um fileoutputstream para armazenar a planilha em disco, que foi gerada no raiz c:\planilha.xls, conforme figura:

 

ggmejp1fig011.jpg 

 

adicionando planilhas ao workbook

é possível adicionar planilhas ou sheets em um workbook. a classe que representa um sheet é a hssfsheet. no exemplo será adiciona à planilha três sheets.

 

package glaucioguerra.info.main;

 

import java.io.fileoutputstream;

import java.io.ioexception;

 

import org.apache.poi.hssf.usermodel.hssfsheet;

import org.apache.poi.hssf.usermodel.hssfworkbook;

 

public class main {

 

      public static void main(string[] args) throws ioexception {

            hssfworkbook wb = new hssfworkbook();

            hssfsheet sheet1 = wb.createsheet("planilha um");

            hssfsheet sheet2 = wb.createsheet("planilha dois");

            hssfsheet sheet3 = wb.createsheet("planilha três");

            fileoutputstream stream = new fileoutputstream("c:/planilha.xls");

            wb.write(stream);

      }

 

}

 

o método createsheet recebe como parâmetro uma string para identificar o nome da planilha adicionada ao workbook. o retorno desta função é do tipo hssfsheet, que será utilizado para manipular as células pertencentes à planilha. a relação entre essas classes seria da seguinte forma:

 

ggmejp1fig021.jpg 

 

a figura ilustra o resultado do código acima, ao qual foram adicionados os sheets planilha um, planilha dois e planilha três.

 

ggmejp1fig031.jpg 

 

adicionando conteúdo nas células

para adicionar um conteúdo em uma célula é necessário instanciar uma classe do tipo hssfrow, na qual serão adicionadas as células que são representadas pela classe hssfcell.

 

segue o exemplo:

 

package glaucioguerra.info.main;

 

import java.io.fileoutputstream;

import java.io.ioexception;

 

import org.apache.poi.hssf.usermodel.hssfrow;

import org.apache.poi.hssf.usermodel.hssfsheet;

import org.apache.poi.hssf.usermodel.hssfworkbook;

 

public class main {

 

      public static void main(string[] args) throws ioexception {

            hssfworkbook wb = new hssfworkbook();

            hssfsheet sheet1 = wb.createsheet("planilha um");

            hssfsheet sheet2 = wb.createsheet("planilha dois");

            hssfsheet sheet3 = wb.createsheet("planilha três");

            hssfrow row = sheet1.createrow(0);

            row.createcell((short) 0).setcellvalue("isto é uma string");

            fileoutputstream stream = new fileoutputstream("c:/planilha.xls");

            wb.write(stream);

      }

 

}

 

o método createcell adiciona células à linha da planilha.  toda a instância da classe hssfrow deve receber um inteiro como parâmetro na criação do objeto, que representa a posição da linha na planilha. a seqüência começa em zero conforme utilizada no exemplo. 

 

resultado

 

ggmejp1fig041.jpg 

 

na segunda parte deste tema será feito um panorama da criação de células do tipo data e suas formatações: cores, alinhamento e mesclagem de células. acompanhe a seqüência dos próximos artigos, pois temos muito a falar nos mais diversos desdobramentos desse assunto.

 

até breve!





Participe! Inclua um comentário
[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


GUSTAVO SANTOS
6/7/2007 17:41
Lamentável Prezados, Diria que essa situação é no mínimo lamentável. O cara escreve um artigo na melhor das intenções para propagar informação e vem um cara numa atitude inusitada ofender. lastimável!!!!!

[responder]

 
Josmar Barbosa
7/7/2007 12:48
RE:   Parabéns pelo artigo, pelo trabalho de pesquisa e pela tradução bem feita. Você agiu como um facilitador e isto tem muito valor na divulgação do conhecimento.

[responder]
 
Glaucio Guerra
9/7/2007 13:07
RE:   Pessoal agradeço o apoio de todos! A segunda parte já está pode ser acessada ok? Um abraço!

[responder]
 
Enzo
20/8/2007 14:00
RE:   Muito bom esse seu artigo. Porém, estou com um problema:Rodando pela classe main no IDE funciona, mas quando é gerado o .jar não funciona. O que será que acontece?

[responder]
 
Glaucio Guerra
29/8/2007 12:08
RE:   Olá Enzo, como você está gerando o .jar? Posso te explicar melhor por email: glaucioguerra at gmail dot com. Um abraço!

[responder]
 
Markus
18/9/2007 15:00
RE:   Eu sou novo na área da computação, estou trabalhando com o Java recentemente... e gostaria de saber como fazer para abrir um documento feito em excel no Java... eu ficaria m uito agradecido.. Obrigado

[responder]
 
Glaucio Guerra
12/10/2007 06:01
RE:   Olá Markus, neste artigo demonstra como isso é feito! No primeiro código está um exemplo ok? Um abraço!

[responder]
 
Andre Rocha
19/6/2007 12:31
Parabens pelo Plágio Créditos deste tutorial devem ser dados à Samudra Gupta end. http://www.devx.com/Java/Article/17301/0 Cara, você é a maior farça que já conheci. :)

[responder]

 
Glaucio Guerra
2/7/2007 17:01
RE:   Caro André, seja mais educado com suas palavras. Primeiramente, você sabe o que é um Plágio? Eu me passei pelo autor deste artigo em algum momento? Eu me apropriei do artigo dele? Eu traduzi o que ele escreveu para Português e assinei em baixo? Eu copiei algum texto, imagem ou seja lá o que for do artigo do autor que você citou? Por favor, faça comentários que acrescentem alguma coisa para os leitores deste portal. Seja mais ético e prove o que diz. Leia bem os dois artigos e veja que ambos estão sendo baseados na API e nada mais.

[responder]
 
José Brandão
4/7/2007 07:04
RE:   Glaucio, existem pessoas que são assim mesmo. Sentem inveja do trabalho do próximo. Eu li os dois artigos e vi que você não copiou absolutamente nada. Um grande abraço e obrigado pelas dicas!

[responder]
 
Peam
19/11/2007 15:17
RE:   Aí seu trouxa, larga a mão de ser babaca. O arqtigo do cara é muito bom, e não tem nada de plágio, não. Você deve estar tão acostumado a copiar códigos dos outros (CTRL C / CTRL V) que você acha que todo mundo é igual. Seu "papa-code" do caramba.

[responder]
 
MSCOSTA
3/12/2007 13:53
RE:   André Rocha..seu filádaputa do kralho...pelo menos aprenda a escrever..."farça" é com "s"...Vê se contribui com algo mais construtivo...seu viado....

[responder]
 
joao
6/7/2007 11:24
Andre Rocha Esse Andre Rocha é um otário, o artigo do cara é muito bom. Manda esse filho da puta desse Andre Rocha tomar no meio do cu.

[responder]

 
Itamar Nunes
21/3/2008 22:25
RE:   Mto Bom!

[responder]
 
joao
6/7/2007 11:24
Andre Rocha Esse Andre Rocha é um otário, o artigo do cara é muito bom. Manda esse filho da puta desse Andre Rocha tomar no meio do cu.

[responder]

 
Diogo
30/4/2008 21:30
RE:   Joao, concordo com vc em relaçao ao Andre Rocha. André, mesmo que o kra tivesse traduzido o artigo isso seria de grande valia pois infelizmente existem muitas pessoas que nao sabem ler ingles. portanto pare de ser mané, escreva ou traduz um artigo e contribua para o crescimento profisional seu e de outras pessoas. Parabéns pelo artigo, muito bom.

[responder]
 
Lucas Fogaça
29/5/2008 01:37
Muito útil Para mim foi bem útil, me ajudou bastante :), valeu.

[responder]

 
fabricio de souza farias
6/9/2008 10:11
dúvida Primeiramente parabenizo pelo artigo!

E em segundo lugar peço que se possível vc tire uma dúvida que surgiu...Bem tu ensinaste a criar uma planilia e modificar as celulas, mas se eu apenas quizesse carregar uma planilia já existente com dados e que meu programa tivesse a opção de escolher uma das abas da mesma como seria o código ? podes me auxiliar me enviando um exemplo ?

Não sei se fui claro, espero que sim!

desde já agradeço!


[responder]

 



 


[Fechar]
Este post está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
DevMedia Group   www.devmedia.com.br   |   www.javafree.org   |   www.mrbool.com
2010 - Todos os Direitos Reservados a DevMedia Group - (21) 3382-5038