Apache POI - Elektronik Tablolar

Bu bölümde bir elektronik tablonun nasıl oluşturulacağı ve Java kullanılarak nasıl değiştirileceği açıklanmaktadır. Elektronik tablo, Excel dosyasındaki bir sayfadır; belirli adlara sahip satırlar ve sütunlar içerir.

Bu bölümü tamamladıktan sonra, bir hesap tablosu oluşturabilecek ve üzerinde okuma işlemleri gerçekleştirebileceksiniz.

Elektronik Tablo Oluşturun

Öncelikle, önceki bölümlerde tartışılan başvurulan sınıfları kullanarak bir elektronik tablo oluşturalım. Önceki bölümü takip ederek, önce bir çalışma kitabı oluşturun ve ardından devam edip bir pafta oluşturabiliriz.

Aşağıdaki kod parçacığı bir elektronik tablo oluşturmak için kullanılır.

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

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

Elektronik tablodaki satırlar

Elektronik tabloların bir ızgara düzeni vardır. Satırlar ve sütunlar belirli isimlerle tanımlanır. Sütunlar harflerle ve rakamlarla satırlarla tanımlanır.

Aşağıdaki kod parçacığı bir satır oluşturmak için kullanılır.

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

Elektronik Tabloya Yazın

Çalışan verilerinin bir örneğini ele alalım. Burada çalışan verileri tablo şeklinde verilmiştir.

Emp Id Çalışan Adı Tanımlama
Tp01 Gopal Teknik Müdür
TP02 Manisha Prova Okuyucu
Tp03 Masthan Teknik Yazar
Tp04 Satish Teknik Yazar
Tp05 Krishna Teknik Yazar

Aşağıdaki kod, yukarıdaki verileri bir elektronik tabloya yazmak için kullanılır.

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

Yukarıdaki Java kodunu farklı kaydedin Writesheet.javave sonra komut isteminden aşağıdaki gibi derleyin ve çalıştırın -

$javac Writesheet.java
$java Writesheet

Adlı bir Excel dosyası oluşturmak için derlenecek ve çalıştırılacaktır. Writesheet.xlsx mevcut dizininizde ve komut isteminde aşağıdaki çıktıyı alacaksınız.

Writesheet.xlsx written successfully

Writesheet.xlsx dosya aşağıdaki gibi görünür.

Elektronik tablodan okuyun

Yukarıdaki excel dosyasını ele alalım. Writesheet.xslxgirdi olarak. Aşağıdaki kodu inceleyin; bir elektronik tablodan verileri okumak için kullanılır.

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

Yukarıdaki kodu içeride tutalım Readsheet.java dosya ve ardından komut isteminden aşağıdaki gibi derleyin ve çalıştırın -

$javac Readsheet.java
$java Readsheet

Sistem ortamınız POI kitaplığıyla yapılandırılmışsa, komut isteminde aşağıdaki çıktıyı oluşturmak için derlenir ve yürütülür.

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