Apache POI - Fogli di calcolo
Questo capitolo spiega come creare un foglio di calcolo e manipolarlo utilizzando Java. Il foglio di calcolo è una pagina in un file Excel; contiene righe e colonne con nomi specifici.
Dopo aver completato questo capitolo, sarai in grado di creare un foglio di calcolo ed eseguire operazioni di lettura su di esso.
Crea un foglio di lavoro
Prima di tutto, creiamo un foglio di calcolo utilizzando le classi di riferimento discusse nei capitoli precedenti. Seguendo il capitolo precedente, creiamo prima una cartella di lavoro e poi possiamo andare avanti e creare un foglio.
Il seguente frammento di codice viene utilizzato per creare un foglio di calcolo.
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
Righe sul foglio di lavoro
I fogli di calcolo hanno un layout a griglia. Le righe e le colonne sono identificate con nomi specifici. Le colonne sono identificate con alfabeti e righe con numeri.
Il seguente frammento di codice viene utilizzato per creare una riga.
XSSFRow row = spreadsheet.createRow((short)1);
Scrivi in un foglio di calcolo
Consideriamo un esempio di dati dei dipendenti. Qui i dati dei dipendenti sono forniti in forma tabellare.
Emp Id | Nome Emp | Designazione |
---|---|---|
Tp01 | Gopal | Responsabile tecnico |
TP02 | Manisha | Lettore di bozze |
Tp03 | Masthan | Scrittore tecnico |
Tp04 | Satish | Scrittore tecnico |
Tp05 | Krishna | Scrittore tecnico |
Il codice seguente viene utilizzato per scrivere i dati precedenti in un foglio di calcolo.
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");
}
}
Salva il codice Java sopra come Writesheet.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:
$javac Writesheet.java
$java Writesheet
Verrà compilato ed eseguito per generare un file Excel denominato Writesheet.xlsx nella directory corrente e otterrai il seguente output nel prompt dei comandi.
Writesheet.xlsx written successfully
Il Writesheet.xlsx il file ha il seguente aspetto.
Leggi da un foglio di calcolo
Consideriamo il file excel sopra denominato Writesheet.xslxcome input. Rispettare il codice seguente; viene utilizzato per leggere i dati da un foglio di calcolo.
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();
}
}
Cerchiamo di mantenere il codice sopra in Readsheet.java file, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:
$javac Readsheet.java
$java Readsheet
Se l'ambiente di sistema è configurato con la libreria POI, verrà compilato ed eseguito per generare il seguente output nel prompt dei comandi.
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