Apache POI - Feuilles de calcul
Ce chapitre explique comment créer une feuille de calcul et la manipuler à l'aide de Java. La feuille de calcul est une page dans un fichier Excel; il contient des lignes et des colonnes avec des noms spécifiques.
Après avoir terminé ce chapitre, vous pourrez créer une feuille de calcul et y effectuer des opérations de lecture.
Créer une feuille de calcul
Tout d'abord, créons une feuille de calcul en utilisant les classes référencées discutées dans les chapitres précédents. En suivant le chapitre précédent, créez d'abord un classeur, puis nous pouvons continuer et créer une feuille.
L'extrait de code suivant est utilisé pour créer une feuille de calcul.
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
Lignes sur la feuille de calcul
Les feuilles de calcul ont une disposition en grille. Les lignes et les colonnes sont identifiées par des noms spécifiques. Les colonnes sont identifiées par des alphabets et les lignes par des nombres.
L'extrait de code suivant est utilisé pour créer une ligne.
XSSFRow row = spreadsheet.createRow((short)1);
Écrire dans une feuille de calcul
Prenons un exemple de données sur les employés. Ici, les données des employés sont présentées sous forme de tableau.
ID Emp | Nom de l'emp | La désignation |
---|---|---|
Tp01 | Gopal | Directeur technique |
TP02 | Manisha | Lecteur d'épreuves |
Tp03 | Masthan | Rédacteur technique |
Tp04 | Satish | Rédacteur technique |
Tp05 | Krishna | Rédacteur technique |
Le code suivant est utilisé pour écrire les données ci-dessus dans une feuille de calcul.
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");
}
}
Enregistrez le code Java ci-dessus sous Writesheet.java, puis compilez et exécutez-le à partir de l'invite de commande comme suit -
$javac Writesheet.java
$java Writesheet
Il se compilera et s'exécutera pour générer un fichier Excel nommé Writesheet.xlsx dans votre répertoire actuel et vous obtiendrez la sortie suivante dans l'invite de commande.
Writesheet.xlsx written successfully
le Writesheet.xlsx Le fichier se présente comme suit.
Lire à partir d'une feuille de calcul
Considérons le fichier Excel ci-dessus nommé Writesheet.xslxcomme entrée. Observez le code suivant; il est utilisé pour lire les données d'une feuille de calcul.
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();
}
}
Gardons le code ci-dessus dans Readsheet.java fichier, puis compilez et exécutez-le à partir de l'invite de commande comme suit -
$javac Readsheet.java
$java Readsheet
Si votre environnement système est configuré avec la bibliothèque POI, il sera compilé et exécuté pour générer la sortie suivante dans l'invite de commande.
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