Apache POI é uma API popular que permite aos programadores criar, modificar e exibir arquivos do MS Office usando programas Java. É uma biblioteca de código aberto desenvolvida e distribuída pela Apache Software Foundation para projetar ou modificar arquivos do Microsoft Office usando o programa Java. Ele contém classes e métodos para decodificar os dados de entrada do usuário ou um arquivo em documentos do MS Office.
Componentes do Apache POI
O Apache POI contém classes e métodos para trabalhar em todos os documentos compostos OLE2 do MS Office. A lista de componentes desta API é fornecida abaixo.
POIFS(Sistema de arquivos de implementação de ofuscação pobre) - Este componente é o fator básico de todos os outros elementos de POI. É usado para ler diferentes arquivos explicitamente.
HSSF (Horrible Spreadsheet Format) - É usado para ler e escrever no formato xls de arquivos MS-Excel.
XSSF (Formato de planilha XML) - É usado para o formato de arquivo xlsx do MS-Excel.
HPSF (Horrible Property Set Format) - É usado para extrair conjuntos de propriedades dos arquivos do MS-Office.
HWPF (Horrible Word Processor Format) - É usado para ler e escrever arquivos de extensão de documentos do MS-Word.
XWPF (XML Word Processor Format) - É usado para ler e escrever arquivos de extensão docx do MS-Word.
HSLF (Horrible Slide Layout Format) - É usado para ler, criar e editar apresentações em PowerPoint.
HDGF (Horrible DiaGram Format) - Contém classes e métodos para arquivos binários do MS-Visio.
HPBF (Horrible PuBlisher Format) - É usado para ler e gravar arquivos do MS-Publisher.
É uma classe de alto nível no pacote org.apache.poi.hssf.usermodel. Ele implementa a interface da pasta de trabalho e é usado para arquivos do Excel no formato .xls.
É uma classe usada para representar formatos de arquivo Excel de alto e baixo nível. Ele pertence ao pacote org.apache.xssf.usemodel e implementa a interface da pasta de trabalho.
Esta é uma classe do pacote org.apache.poi.hssf.usermodel. Pode criar planilhas excel e permite formatar o estilo da planilha e os dados da planilha.
Esta é uma classe que representa uma representação de alto nível de planilhas Excel. Ele está no pacote org.apache.poi.hssf.usermodel.
Esta é uma classe do pacote org.apache.poi.xssf.usermodel. Ele implementa a interface Row, portanto, pode criar linhas em uma planilha.
Esta é uma classe do pacote org.apache.poi.xssf.usermodel. Ele implementa a interface Cell. É uma representação de alto nível das células nas linhas de uma planilha.
Esta é uma classe do pacote org.apache.poi.xssf.usermodel. Fornecerá possíveis informações sobre o formato do conteúdo em uma célula de uma planilha. Ele também oferece opções para modificar esse formato. Ele implementa a interface CellStyle.
Esta é uma classe do pacote org.apache.poi.hssf.util. Ele fornece cores diferentes como classes aninhadas. Normalmente, essas classes aninhadas são representadas usando seus próprios índices. Ele implementa a interface Color.
Esta é uma classe do pacote org.apache.poi.xssf.usermodel. Ele implementa a interface Font e, portanto, pode lidar com diferentes fontes em uma pasta de trabalho.
Esta é uma classe do pacote org.apache.poi.xssf.usermodel. Ele implementa a interface Hyperlink. É usado para definir um hiperlink para o conteúdo da célula de uma planilha.
Esta é uma classe do pacote org.apache.poi.xssf.usermodel. Ele implementa a interface CreationHelper. É usado como uma classe de suporte para avaliação de fórmulas e configuração de hiperlinks.
Esta é uma classe do pacote org.apache.poi.xsssf.usermodel. Ele implementa a interface PrintSetup. É usado para definir o tamanho, área, opções e configurações da página de impressão.
O seguinte snippet de código é usado para criar uma planilha.
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
O seguinte trecho de código é usado para criar uma linha.
XSSFRow row = spreadsheet.createRow((short)1);
O seguinte trecho de código é usado para criar uma célula.
//create new workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//create spreadsheet with a name
XSSFSheet spreadsheet = workbook.createSheet("new sheet");
//create first row on a created spreadsheet
XSSFRow row = spreadsheet.createRow(0);
//create first cell on created row
XSSFCell cell = row.createCell(0);
Tipos de células
O tipo de célula especifica se uma célula pode conter strings, valor numérico ou fórmulas. Uma célula de string não pode conter valores numéricos e uma célula numérica não pode conter strings. A seguir são fornecidos os tipos de células, seus valores e sintaxe de tipo.
Tipo de valor da célula | Sintaxe de tipo |
---|---|
Valor da célula em branco | XSSFCell.CELL_TYPE_BLANK |
Valor booleano da célula | XSSFCell.CELL_TYPE_BOOLEAN |
Valor da célula de erro | XSSFCell.CELL_TYPE_ERROR |
Valor da célula numérica | XSSFCell.CELL_TYPE_NUMERIC |
Valor da célula da string | XSSFCell.CELL_TYPE_STRING |
A classe XSSFCellStyle é usada para definir o estilo de uma célula. O trecho de código a seguir pode ser usado para definir o alinhamento da célula como "Superior esquerdo".
XSSFCellStyle style1 = workbook.createCellStyle();
spreadsheet.setColumnWidth(0, 8000);
style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
cell.setCellValue("Top Left");
cell.setCellStyle(style1);
A classe XSSFFont é usada para adicionar uma fonte a uma célula. O seguinte trecho de código pode ser usado para definir a cor de fundo de uma célula como "Verde".
//Create a new font and alter it.
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 30);
font.setFontName("IMPACT");
font.setItalic(true);
font.setColor(HSSFColor.BRIGHT_GREEN.index);
//Set font into style
XSSFCellStyle style = workbook.createCellStyle();
style.setFont(font);
A classe XSSFCellStyle pode ser usada para girar uma célula. O trecho de código a seguir pode ser usado para definir o alinhamento do texto da célula em um ângulo especificado.
//90 degrees
XSSFCellStyle myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 90);
cell = row.createCell(5);
cell.setCellValue("90D angle");
cell.setCellStyle(myStyle);
XSSFCell.CELL_TYPE_FORMULA pode ser usado para a célula como uma célula de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("SUM(C2:C3)");
XSSFCell.CELL_TYPE_FORMULA pode ser usado para a célula como uma célula de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("POWER(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("POWER(C2:C3)");
XSSFCell.CELL_TYPE_FORMULA pode ser usado para a célula como uma célula de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("MAX(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("MAX(C2:C3)");
XSSFCell.CELL_TYPE_FORMULA pode ser usado para a célula como uma célula de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("FACT(C2)" );
cell = row.createCell(3);
cell.setCellValue("FACT(C2)");
XSSFCell.CELL_TYPE_FORMULA pode ser usado para a célula como uma célula de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SQRT(C2)" );
cell = row.createCell(3);
cell.setCellValue("SQRT(C2)");
XSSFHyperlink pode ser usado para adicionar um hiperlink a uma célula.
CreationHelper createHelper = workbook.getCreationHelper();
XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
link.setAddress("http://www.tutorialspoint.com/" );
cell.setHyperlink((XSSFHyperlink) link);
O trecho de código a seguir demonstra a configuração da área imprimível de um Excel usando o Apache POI.
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook
.createSheet("Print Area");
//set print area with indexes
workbook.setPrintArea(
0, //sheet index
0, //start column
5, //end column
0, //start row
5 //end row
);
//set paper size
spreadsheet.getPrintSetup().setPaperSize(
XSSFPrintSetup.A4_PAPERSIZE);
//set display grid lines or not
spreadsheet.setDisplayGridlines(true);
//set print grid lines or not
spreadsheet.setPrintGridlines(true);