2 Nisan 2018 Pazartesi

POI Excel İçin XSSFCell Sınıfı

Giriş
Bu sınıfı kullanmak için şu satırı dahil ederiz.
import org.apache.poi.xssf.usermodel.XSSFCell;
Eğer arayüz kullanmak istersek şu satırı dahil ederiz.
import org.apache.poi.ss.usermodel.Cell;
Constructor
Şöyle yaparız.
XSSFCell cell = row.createCell(0);
Mevcut hücre şöyle alınır.
int col = ...;
XSSFCell cell = row.getCell(col);
Constructor - Iterator
Şöyle yaparız.
for (Row row : sheet) {
  for (Cell cell : row) {
    ...
  }
}
getCellType metodu
Şöyle yaparız.
Cell cell = ...;
switch (cell.getCellType()) {
  case Cell.CELL_TYPE_BOOLEAN:
    cell.getBooleanCellValue();
    break;
  case Cell.CELL_TYPE_NUMERIC:
    cell.getNumericCellValue();
    break;
 case Cell.CELL_TYPE_STRING:
   cell.getStringCellValue();
   break;
 case Cell.CELL_TYPE_BLANK:
   break;
}
Detaylarına bakalım.

Cell.CELL_TYPE_BLANK
Şöyle yaparız.
cell.getStringCellValue();
Cell.CELL_TYPE_BOOLEAN
Şöyle yaparız.
cell.getBooleanCellValue();
Cell.CELL_TYPE_ERROR
Şöyle yaparız.
cell.getErrorCellValue()
CELL_TYPE_NUMERIC
Örnek - BigDecimal
Şöyle yaparız.
new BigDecimal(cell.getNumericCellValue()).toPlainString();
Örnek - double
Şöyle yaparız.
double x = cell.getNumericCellValue();
Örnek - int
Şöyle yaparız.
int value = (int) cell.getNumericCellValue ();
Örnek - String
Şöyle yaparız.
String.valueOf((long) cell.getNumericCellValue ());
CELL_TYPE_NUMERIC - Date
Numeric tip tarih için de kullanılıyor. Eğer tarih ise şöyle yaparız.
Date date = cell.getDateCellValue ();
Yani şöyle bir şey yazmak gerekir.
if(DateUtil.isCellDateFormatted(cell)){
  Date myDate = cell.getDateCellValue();
  DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
  String result = formatter.format(myDate);
  System.out.println("Today : " + result);    
}
Cell.CELL_TYPE_STRING
Şöyle yaparız.
cell.getStringCellValue();
getRichString metodu
Şöyle yaparız.
if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
  cell.getRichStringCellValue().getString();
}
setCellStyle metodu
Şöyle yaparız.
XSSFCellStyle oddStyle = ...
XSSFCell cell = ...
cell.setCellStyle(oddStyle);
setCellType metodu
Şöyle yaparız.
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
Şu kod deprecate edildildiği için kullanılmamalı.
cell.setCellType(XSSFCell.CELL_TYPE_NUMERIC);
setCellValue metodu
String, Long vs. gibi bir sürü farklı parametre alabilir. Şöyle yaparız.
cell.setCellValue(...);
String için şöyle yaparız.
cell.setCellValue("...");
Eğer elimizdeki nesne tipi Object ise şöyle yaparız.
Object obj  = ...
if(obj instanceof Integer) 
  cell.setCellValue((Integer)obj);
else if(obj instanceof Boolean)
  cell.setCellValue((Boolean)obj);
else if(obj instanceof String)
  cell.setCellValue((String)obj);
else if(obj instanceof Double)
  cell.setCellValue((Double)obj);
}

Hiç yorum yok:

Yorum Gönder