Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

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.

 

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!





    22 COMENTÁRIOS

[Fechar]

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



Gustavo Santos
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!!!!!


em 6/7/2007 17:41 - Responder

 

  Josmar Barbosa
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.


em 7/7/2007 12:48 - Responder
 

  Glaucio Guerra
Pessoal agradeço o apoio de todos! A segunda parte já está pode ser acessada ok? Um abraço!


em 9/7/2007 13:07 - Responder
 

  Enzo
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?


em 20/8/2007 14:00 - Responder
 

  Glaucio Guerra
Olá Enzo, como você está gerando o .jar? Posso te explicar melhor por email: glaucioguerra at gmail dot com. Um abraço!


em 29/8/2007 12:08 - Responder
 

  Markus
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


em 18/9/2007 15:00 - Responder
 

  Glaucio Guerra
Olá Markus, neste artigo demonstra como isso é feito! No primeiro código está um exemplo ok? Um abraço!


em 12/10/2007 06:01 - Responder
 

Andre Rocha
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. :)


em 19/6/2007 12:31 - Responder

 

  Glaucio Guerra
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.


em 2/7/2007 17:01 - Responder
 

  José Brandão
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!


em 4/7/2007 07:04 - Responder
 

  Peam
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.


em 19/11/2007 15:17 - Responder
 

  Mscosta
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....


em 3/12/2007 13:53 - Responder
 

Joao
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.


em 6/7/2007 11:24 - Responder

 

  Itamar Nunes
Mto Bom!


em 21/3/2008 22:25 - Responder
 

Joao
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.


em 6/7/2007 11:24 - Responder

 

  Diogo
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.


em 30/4/2008 21:30 - Responder
 

Lucas Fogaça
Para mim foi bem útil, me ajudou bastante :), valeu.


em 29/5/2008 01:37 - Responder

 

Fabricio De Souza Farias
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!


em 6/9/2008 10:11 - Responder

 

  Ramon Franco Simão
Como faço pra auterar o tamanho de uma cell ou row.


Muito bom o artigo, mas só ficou faltando isso!


em 18/10/2010 09:56 - Responder
 

  Dyego Souza Do Carmo
cell.setWitdh();


em 28/10/2010 13:47 - Responder
 

Jean Carlos
Amigo não esta gerando as abas.
como faco para ter certeza.


em 7/11/2011 16:19 - Responder

 

  Dyego Souza Do Carmo
Abas ? As pastas ? Voce abre no excel e nao gera nenhuma pasta ?


em 9/11/2011 09:04 - Responder
 



Autor
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 projetos com foco em aplicações JEE voltadas para o ger...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
19   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[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
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03