Apache POI - Arkusze kalkulacyjne

W tym rozdziale wyjaśniono, jak utworzyć arkusz kalkulacyjny i manipulować nim za pomocą języka Java. Arkusz kalkulacyjny to strona w pliku Excel; zawiera wiersze i kolumny o określonych nazwach.

Po ukończeniu tego rozdziału będziesz mógł utworzyć arkusz kalkulacyjny i wykonać na nim operacje odczytu.

Utwórz arkusz kalkulacyjny

Przede wszystkim utwórzmy arkusz kalkulacyjny przy użyciu klas, do których istnieją odwołania, omówionych we wcześniejszych rozdziałach. Postępując zgodnie z poprzednim rozdziałem, najpierw utwórz skoroszyt, a następnie możemy przejść do tworzenia arkusza.

Poniższy fragment kodu służy do tworzenia arkusza kalkulacyjnego.

//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();

//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

Wiersze w arkuszu kalkulacyjnym

Arkusze kalkulacyjne mają układ siatki. Wiersze i kolumny mają określone nazwy. Kolumny są oznaczone alfabetami, a wiersze liczbami.

Poniższy fragment kodu służy do tworzenia wiersza.

XSSFRow row = spreadsheet.createRow((short)1);

Napisz do arkusza kalkulacyjnego

Rozważmy przykład danych pracowników. Tutaj dane pracowników są podane w formie tabelarycznej.

Emp Id Nazwa Emp Przeznaczenie
Tp01 Gopal Menedżer techniczny
TP02 Manisha Proof Reader
Tp03 Masthan Pisarz techniczny
Tp04 Satish Pisarz techniczny
Tp05 Kryszna Pisarz techniczny

Poniższy kod służy do zapisywania powyższych danych w arkuszu kalkulacyjnym.

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");
   }
}

Zapisz powyższy kod Java jako Writesheet.java, a następnie skompiluj i uruchom go z wiersza polecenia w następujący sposób -

$javac Writesheet.java
$java Writesheet

Skompiluje się i uruchomi, aby wygenerować plik Excel o nazwie Writesheet.xlsx w bieżącym katalogu, a w wierszu polecenia otrzymasz następujące dane wyjściowe.

Writesheet.xlsx written successfully

Plik Writesheet.xlsx plik wygląda następująco.

Czytaj z arkusza kalkulacyjnego

Rozważmy powyższy plik Excela o nazwie Writesheet.xslxjako dane wejściowe. Obserwuj następujący kod; służy do odczytu danych z arkusza kalkulacyjnego.

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();
   }
}

Zachowajmy powyższy kod w Readsheet.java plik, a następnie skompiluj i uruchom go z wiersza polecenia w następujący sposób -

$javac Readsheet.java
$java Readsheet

Jeśli środowisko systemowe jest skonfigurowane z biblioteką POI, zostanie skompilowane i uruchomione, aby wygenerować następujące dane wyjściowe w wierszu polecenia.

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