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