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