Trabalhando com arquivos office Parte 1

setembro 11, 2007 às 1:09 pm | Publicado em Java | 1 Comentário

Quem nunca passou por um problema ao trabalhar com arquivos no formato da Microsoft como word, excel e cia?

Precisando migrar uma planilha de controle toda feita em excel e com muitíssimos dados, conheci o projeto POI da jakarta, que simplesmente salvou muita gente de digitação exaustiva 🙂 .
Para utilizar é relativamente fácil, basta efetuar download da última versão do pacote no site http://jakarta.apache.org/poi/index.html adicionar as libs ao seu projeto e pronto, abaixo um código de exemplo que utilizei, e mais abaixo dele uma explicacão linha a linha.

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
/**
*
* @author fabiano
*/
public class LeExcel {
public static void main(String[] args) {
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("/home/fabiano/planilhateste.xls"));
HSSFWorkbook wb    = new HSSFWorkbook(fs);
HSSFSheet sheet    = wb.getSheetAt(2);
HSSFRow row = sheet.getRow(1);

HSSFCell cell = row.getCell((short)4);
System.out.println(cell);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Indicando o arquivo que deverá ser aberto

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("/home/fabiano/planilhateste.xls"));

A Classe HSSFWorkbook é a principal de todo o contexto, de onde você pega o corpo do documento
onde pode se criar as folhas (sheet) ou ler as existentes

HSSFWorkbook wb    = new HSSFWorkbook(fs);

Aqui buscamos a folha do excel, começa na numero 0 e vai até n. Uma maneira legal de ver quantas folhas (sheets) ativas existem no documento, basta usar o seguinte método:

wb.getNumberOfSheets()

Neste caso do excel estou pegando a terceira folha, lembre começa em 0

HSSFSheet sheet    = wb.getSheetAt(2);

Esta próxima ira definir qual fileira de células iremos utilizar, lembrando que começa da 0 e vai até n
da mesma forma para descobrir quantas fileiras existem basta usar o seguinte método:

sheet.getPhysicalNumberOfRows()
HSSFRow row = sheet.getRow(1);

A próxima classe HSSFCell é onde iremos trabalhar diretamente com a célula em sim, podemos pegar qualquer célula e seu respectivo valor, formula, etc … Neste próxima iremos mapear a célula 4 (lembre começa em 0 e vai até n). Caso seja desejável buscar a quantidade de células existentes na fileira, basta usar o seguinte método:

row.getPhysicalNumberOfCells();
HSSFCell cell = row.getCell((short)4);

E finalmente para mostrar o conteúdo da célula, basta mandar imprimir a mesma diretamente, ex:

System.out.println(cell);

Na proxima parte deste artigo explicarei como construir um arquivo excel com dados provinientes de um ResultSet sql.

Blog no WordPress.com.
Entries e comentários feeds.