Excel etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Excel etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

19 Haziran 2018 Salı

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

Giriş
Bu sınıfı kullanmak için şu satır dahil edilir.
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
POI ile kullanıbilecek 3 tane programlama modeli var.

1.User API (XSSF)
2.Streaming User API (SXSSF)
3. Event API (XSSF with SAX)

XSS API daha çok bellek tüketir. SXSSF API streaming ile çalışır. Daha az bellek tüketir. Event API ise XSSFReader sınıfı etrafında toplanmıştır.

Eğer okunacak belge çok büyük ise SXSSFWorkbook sınıfı terchi edilmeli.  XLSX aslında bir zip dosyasıdır.

constructor - Default
Genelde yeni bir workbook kaydetmek için kullanılır.
XSSFWorkbook wb = new XSSFWorkbook();
constructor - File
Okumak için şöyle yaparız.
Workbook wb = WorkbookFactory.create(new File("input.xls"));
constructor - path
Okumak için şöyle yaparız.
Workbook workbook = WorkbookFactory.create(new FileInputStream(filePath));
constructor - Input Stream
Okumak için şöyle yaparız
// Open workbook
Path path = Paths.get("....xlsx");
InputStream is = Files.newInputStream(path);
XSSFWorkbook wb = new XSSFWorkbook(is);
close metodu
Şöyle yaparız
wb.close();
createCellStyle metodu
Şöyle yaparız.
XSSFCellStyle headStyle = wb.createCellStyle();
createFont metodu
Şöyle yaparız.
XSSFFont headerFont = wb.createFont();
createSheet metodu
Şöyle yaparız.
XSSFSheet sheet = wb.createSheet("Report");
getSheetAt metodu
XSSFSheet nesnesi döndürür. Şöyle yaparız
XSSFSheet sheet = wb.getSheetAt (0);
write metodu
Dosyaya veya ByteArrayOutputStream sınıflarına yazdırabiliriz. Dosyaya yazdırmak için şöyle yaparız.
Path path = Paths.get("....xlsx");
OutputStream os = Files.newOutputStream(path);
wb.write(os);
os.close();
wb.close();
Şöyle de yapabiliriz.
FileOutputStream out = new FileOutputStream(new File(xlsxFilePath));
wb.write(out);
Named Range metodları
getNumberOfNames metodu
Örnek ver
getName metodu
Şöyle yaparız.
Workbook wb = WorkbookFactory.create(new File("input.xls"));
Name name = wb.getName("TestRange");

System.out.println("Named Range '" + name.getNameName() + 
                   "' points to " + name.getRefersToFormula());
Çıktı olarak şunu alırız.
Named Range 'TesRange' points to Sheet1!$A$1:$C$5
getNameAt metodu
Örnek ver
createName metodu
Örnek ver

4 Nisan 2018 Çarşamba

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

Giriş
Bu sınıfı kullanmak için şu satırı dahil ederiz.
import org.apache.poi.xssf.usermodel.XSSFRow;
Eğer arayüzü kullanmak istersek şöyle yaparız.
import org.apache.poi.ss.usermodel.Row;
Constructor
Şöyle yaparız.
XSSFRow row = sheet.createRow(1);
Mevcut satır şöyle alınır
int rownr = ...;;
XSSFRow row = sheet.getRow(rownr);
Constructor - iterator
Şöyle yaparız.
for (Row row : sheet) {
  ...
}
cellIterator metodu
Şu satırı dahil ederiz.
import java.util.Iterator;
Bir satırın tüm sütunlarını dolaşmak için şöyle yaparız.
XSSFWorkbook wBook = ...;
XSSFSheet sheet = wBook.getSheetAt(0);
// Iterate through each rows from first sheet
Iterator<Row> rowIterator = sheet.iterator();

while (rowIterator.hasNext()) {
  Row row = rowIterator.next();
  // For each row, iterate through each columns
  Iterator<Cell> cellIterator = row.cellIterator();
  while (cellIterator.hasNext()) {
    Cell cell = cellIterator.next();
    ...
   }
}
createCell metodu
Şöyle yaparız.
XSSFCell cell = row.createCell(0);
getCell metodu
Şöyle yaparız.
int colnr = ...;
XSSFCell cell = row.getCell(colnr);
Şöyle yaparız.
int i = 0; 
Cell cell = row.getCell(i, Row.CREATE_NULL_AS_BLANK);
getLastCellNumber metodu
Şöyle yaparız.
int iCellCount = row.getLastCellNum();
getPhysicalNumberOfCells metodu
Şöyle yaparız.
XSSFSheet sheet = ...;
int colcount= sheet.getRow(0).getPhysicalNumberOfCells();

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