Apache POI - planilhas

Este capítulo explica como criar uma planilha e manipulá-la usando Java. A planilha é uma página em um arquivo Excel; ele contém linhas e colunas com nomes específicos.

Depois de concluir este capítulo, você será capaz de criar uma planilha e realizar operações de leitura nela.

Crie uma planilha

Em primeiro lugar, vamos criar uma planilha usando as classes referenciadas discutidas nos capítulos anteriores. Seguindo o capítulo anterior, crie primeiro uma pasta de trabalho e depois podemos prosseguir e criar uma planilha.

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");

Linhas na planilha

As planilhas têm um layout de grade. As linhas e colunas são identificadas com nomes específicos. As colunas são identificadas com alfabetos e linhas com números.

O seguinte trecho de código é usado para criar uma linha.

XSSFRow row = spreadsheet.createRow((short)1);

Escreva em uma planilha

Vamos considerar um exemplo de dados de funcionários. Aqui, os dados do funcionário são fornecidos em forma de tabela.

Id Emp Nome Emp Designação
Tp01 Gopal Gerente técnico
TP02 Manisha Leitor de Provas
Tp03 Masthan Escritor técnico
Tp04 Satish Escritor técnico
Tp05 Krishna Escritor técnico

O código a seguir é usado para gravar os dados acima em uma planilha.

import java.io.File;
import java.io.FileOutputStream;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Writesheet {
   public static void main(String[] args) throws Exception {

      //Create blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create a blank sheet
      XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");

      //Create row object
      XSSFRow row;

      //This data needs to be written (Object[])
      Map < String, Object[] > empinfo = 
      new TreeMap < String, Object[] >();
      empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
      empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
      empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
      empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
      empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
      empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
      
      //Iterate over data and write to sheet
      Set < String > keyid = empinfo.keySet();
      int rowid = 0;

      for (String key : keyid) {
         row = spreadsheet.createRow(rowid++);
         Object [] objectArr = empinfo.get(key);
         int cellid = 0;

         for (Object obj : objectArr) {
            Cell cell = row.createCell(cellid++);
            cell.setCellValue((String)obj);
         }
      }

      //Write the workbook in file system
      FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("Writesheet.xlsx written successfully");
   }
}

Salve o código Java acima como Writesheet.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac Writesheet.java
$java Writesheet

Ele irá compilar e executar para gerar um arquivo Excel chamado Writesheet.xlsx em seu diretório atual e você obterá a seguinte saída no prompt de comando.

Writesheet.xlsx written successfully

o Writesheet.xlsx arquivo tem a seguinte aparência.

Ler de uma planilha

Vamos considerar o arquivo excel acima chamado Writesheet.xslxcomo entrada. Observe o seguinte código; ele é usado para ler os dados de uma planilha.

import java.io.File;
import java.io.FileInputStream;

import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Readsheet {
   static XSSFRow row;
   public static void main(String[] args) throws Exception {
      FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));
      
      XSSFWorkbook workbook = new XSSFWorkbook(fis);
      XSSFSheet spreadsheet = workbook.getSheetAt(0);
      Iterator < Row >  rowIterator = spreadsheet.iterator();
      
      while (rowIterator.hasNext()) {
         row = (XSSFRow) rowIterator.next();
         Iterator < Cell >  cellIterator = row.cellIterator();
         
         while ( cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            
            switch (cell.getCellType()) {
               case Cell.CELL_TYPE_NUMERIC:
                  System.out.print(cell.getNumericCellValue() + " \t\t ");
                  break;
               
               case Cell.CELL_TYPE_STRING:
                  System.out.print(
                  cell.getStringCellValue() + " \t\t ");
                  break;
            }
         }
         System.out.println();
      }
      fis.close();
   }
}

Vamos manter o código acima em Readsheet.java arquivo e, em seguida, compilar e executá-lo a partir do prompt de comando da seguinte maneira -

$javac Readsheet.java
$java Readsheet

Se o ambiente do seu sistema estiver configurado com a biblioteca POI, ela será compilada e executada para gerar a seguinte saída no prompt de comando.

EMP ID   EMP NAME       DESIGNATION 
 tp01     Gopal       Technical Manager 
 tp02     Manisha     Proof Reader 
 tp03     Masthan     Technical Writer 
 tp04     Satish      Technical Writer 
 tp05     Krishna     Technical Writer