Bu yazımda sizlere PrimeFaces fileUpload componentini kullanarak bir excel
dosyasında ki verileri okuyup , okuduğumuz bu verileri JPA ile DB ye nasıl
kaydedeceğimizi anlatacağım
Öncelikle bir excel dosyasını okumak için aşağıda ki linkden gerekli
jarları indirip projeye eklemeniz gerekiyor.
POI kütüphanesi : https://poi.apache.org/download.html
Bu kütüphaneleri indirip projeye ekledikten sonra artık excel i parse
etmeye başlayabiliriz.(Örnek bir excel dosyası yazının sonunda ekte bulunmakta)
private Vector read(String
fileName) {
Vector
cellVectorHolder = new Vector();
try {
File
file = new File(fileName);
Workbook
wb = WorkbookFactory.create(file);
Sheet
mySheet = wb.getSheetAt(0);
Iterator<Row>
rowIter = mySheet.rowIterator();
while (rowIter.hasNext())
{
XSSFRow
myRow = (XSSFRow) rowIter.next();
Iterator
cellIter = myRow.cellIterator();
Vector
cellStoreVector = new Vector();
while (cellIter.hasNext())
{
XSSFCell
myCell = (XSSFCell) cellIter.next();
cellStoreVector.addElement(myCell);
}
cellVectorHolder.addElement(cellStoreVector);
file.delete();
}
}
catch (Exception e) {
e.printStackTrace();
}
return cellVectorHolder;
}
Yukarıda ki metod excelin içinde ki
verileri Vector tipinde bir object şeklinde bize dönüyor.Ön yüzde bu component
aşağıda ki gibi kullanılır.
<p:fileUpload fileUploadListener="#{kitapKayitBean.handleFileUpload}"
mode="advanced"/>
Artık handleFileUpload
metodumuzu yazabiliriz
public void
handleFileUpload(FileUploadEvent event) {
Kitaplar
kitapobj = new Kitaplar();
List<Kitaplar>
kitaplarList = new ArrayList<Kitaplar>();
Vector
dataHolder = read(path + event.getFile().getFileName());
for (int i = 1; i <
dataHolder.size(); i++) {
Vector
cellStoreVector = (Vector) dataHolder.elementAt(i);
for (int j = 0; j <
cellStoreVector.size(); j++) {
XSSFCell
myCell = (XSSFCell) cellStoreVector.elementAt(j);
if
(myCell.getColumnIndex() == 0) { kitapobj.setKitapID(Integer.parseInt(myCell.toString()
.split("\\.")[0]));
}
else if
(myCell.getColumnIndex() == 1) {
kitapobj.setKitapad(myCell.toString());
}
else if
(myCell.getColumnIndex() == 2) {
kitapobj.setYazarad(myCell.toString());
}
else if
(myCell.getColumnIndex() == 3) {
kitapobj.setKitaptur(myCell.toString());
}
else {
kitapobj.setKitapdurum(myCell.toString());
}
if
(kitapobj.getKitapID() != null
&& kitapobj.getKitapad() != null
&& kitapobj.getYazarad() != null
&& kitapobj.getKitaptur() != null
&& kitapobj.getKitapdurum() != null) {
kitaplarList.add(kitapobj);
kitapobj
= new Kitaplar();
}
}
}
for (int i = 0; i <
kitaplarList.size(); i++) {
service.kitapKaydet(kitaplarList.get(i));
}
}
Bu kodda kendinize göre ufak değişiklikler yaparak kullandığımız takdirde
DB ye kayıt atabiliriz.
for (int i = 0; i <
kitaplarList.size(); i++) {
service.kitapKaydet(kitaplarList.get(i));
}
Bu kısımda daha önceki yazılarımda
anlattığım gibi JPA ile kayıt atıyoruz.
Buradan bahsettiğim örnek excel dosyasını indirebilirsiniz.
Hiç yorum yok:
Yorum Gönder