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