PDI de Apache: hojas de cálculo
Este capítulo explica cómo crear una hoja de cálculo y manipularla usando Java. La hoja de cálculo es una página en un archivo de Excel; contiene filas y columnas con nombres específicos.
Después de completar este capítulo, podrá crear una hoja de cálculo y realizar operaciones de lectura en ella.
Crear una hoja de cálculo
En primer lugar, creemos una hoja de cálculo utilizando las clases de referencia discutidas en los capítulos anteriores. Siguiendo el capítulo anterior, primero cree un libro de trabajo y luego podemos continuar y crear una hoja.
El siguiente fragmento de código se utiliza para crear una hoja de cálculo.
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
Filas en la hoja de cálculo
Las hojas de cálculo tienen un diseño de cuadrícula. Las filas y columnas se identifican con nombres específicos. Las columnas se identifican con alfabetos y las filas con números.
El siguiente fragmento de código se utiliza para crear una fila.
XSSFRow row = spreadsheet.createRow((short)1);
Escribir en una hoja de cálculo
Consideremos un ejemplo de datos de empleados. Aquí los datos de los empleados se dan en forma de tabla.
ID de emp | Nombre emp | Designacion |
---|---|---|
Tp01 | Gopal | Gerente técnico |
TP02 | Manisha | Lector de pruebas |
Tp03 | Masthan | Escritor técnico |
Tp04 | Satish | Escritor técnico |
Tp05 | Krishna | Escritor técnico |
El siguiente código se utiliza para escribir los datos anteriores en una hoja de cálculo.
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");
}
}
Guarde el código Java anterior como Writesheet.java, y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:
$javac Writesheet.java
$java Writesheet
Se compilará y ejecutará para generar un archivo de Excel llamado Writesheet.xlsx en su directorio actual y obtendrá el siguiente resultado en el símbolo del sistema.
Writesheet.xlsx written successfully
los Writesheet.xlsx archivo tiene el siguiente aspecto.
Leer de una hoja de cálculo
Consideremos el archivo de Excel anterior llamado Writesheet.xslxcomo entrada. Observe el siguiente código; se utiliza para leer los datos de una hoja de cálculo.
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();
}
}
Mantengamos el código anterior en Readsheet.java y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:
$javac Readsheet.java
$java Readsheet
Si el entorno de su sistema está configurado con la biblioteca de puntos de interés, se compilará y ejecutará para generar la siguiente salida en el símbolo del sistema.
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