java excel dosya okuma örnek

2 beğenilme 0 beğenilmeme
462 kez görüntülendi
22, Temmuz, 2013 Bilgi Teknolojileri kategorisinde misafir tarafından soruldu
Java ile  excel dosyadan okuma yazma yapmak istiyorum. Nasıl yaparım ?
    

4 Cevaplar

1 beğenilme 0 beğenilmeme
6, Aralık, 2017 nsy Bilge (95,630 puan) tarafından cevaplandı
Güncel bir örnek;


private static final String FILE_NAME = "/home/ay/NetBeansProjects/ReadExcel/docs/cari.xlsx";
FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
            Workbook workbook = new XSSFWorkbook(excelFile);
            Sheet sheet = workbook.getSheetAt(0);
            Iterator<Row> iterator = sheet.iterator();

while (iterator.hasNext()) {
if (currentRow.getCell(1) != null) {
                        if (currentRow.getCell(1).getCellTypeEnum() == CellType.STRING) {
                            s = s.replace("TELEFON", currentRow.getCell(1).getStringCellValue());
                            System.out.println("TEL STR: " + currentRow.getCell(1).getStringCellValue());
                        }
                        if (currentRow.getCell(1).getCellTypeEnum() == CellType.NUMERIC) {
                            s = s.replace("TELEFON", currentRow.getCell(1).getNumericCellValue() + "");
                            System.out.println("TEL NUM: " + currentRow.getCell(1).getNumericCellValue());
                        }
                        cepRecord=false;
                    }
}
0 beğenilme 0 beğenilmeme
24, Temmuz, 2013 nsy Bilge (95,630 puan) tarafından cevaplandı

Aşağıdaki  kod, d sürücüsünde mylist isimli  dosyayı  okuyarak, daha sonra  d sürücüsünde myfolder  klasöründe yeni dosyalar oluşturur. Mylist  isimli excel dosyasında 3.  colonda aynı isimde  bulunan satırlardan yeni bir dosya oluşturur. Dosya adı olarak  aynı olan colon adını, ve adedini verir. Örnek dosyayı  buraya tıklayarak indirebilirsiniz. Ayrıca  poi  kütüphanesini indirmeniz gerekir.

0 beğenilme 0 beğenilmeme
24, Temmuz, 2013 nsy Bilge (95,630 puan) tarafından cevaplandı
package javaexcelread;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.Vector;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
 
public class JavaExcelRead {
 
    private static int rowCounter = 0;
 
    public static void main(String[] args) throws IOException {
        String fileName = "D:\\mylist.xls";
        //Veriyi okuyup vektöre yazıyoruz.
        Vector dataHolder = readExcelFile(fileName);
        //Veriyi dosyaya  yazan metot.
        printCellDataToFile(dataHolder);
    }
 
  // devam ediyor
0 beğenilme 0 beğenilmeme
24, Temmuz, 2013 nsy Bilge (95,630 puan) tarafından cevaplandı
  public static Vector readExcelFile(String fileName) {
        // Vektör ouşturuyoruz.
        Vector cellVectorHolder = new Vector();
        try {
            // Dosyamız
            FileInputStream myInput = new FileInputStream(fileName);
            POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
            HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);
            // Birinci sheet i alıyoruz.
            HSSFSheet mySheet = myWorkBook.getSheetAt(0);
            // Iterator tanımlıyoruz.
            Iterator rowIter = mySheet.rowIterator();
            while (rowIter.hasNext()) {
                HSSFRow myRow = (HSSFRow) rowIter.next();
                Iterator cellIter = myRow.cellIterator();
                Vector cellStoreVector = new Vector();
                while (cellIter.hasNext()) {
                    HSSFCell myCell = (HSSFCell) cellIter.next();
                    cellStoreVector.addElement(myCell);
                }
                cellVectorHolder.addElement(cellStoreVector);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cellVectorHolder;
    }
    // Bu metotla vekör içerisindeki verileri istediğimiz gibi kullanabiliriz.
    // Ben belli bir colondaki veriler aynı ise, o gurubu başka bir dosyaya yazıyorum. 
 
    private static void printCellDataToFile(Vector dataHolder) throws IOException {
        //Dosyadıki  ilk satırın 3. kolonu, yayıncı adı yer alıyor.
        String tempcell = "1001 KİTAP";
        int dosyaSayisi = 1;
        int noPublisher = 0;
 
        Vector lastList = new Vector();
        Vector genelList = new Vector();
 
        for (int i = 0; i < dataHolder.size(); i++) {
            Vector cellStoreVector = (Vector) dataHolder.elementAt(i);
            HSSFCell myCell = (HSSFCell) cellStoreVector.elementAt(3);
 
            if (myCell.toString().trim().equals(tempcell)) {
                lastList.addElement(cellStoreVector);
            } else {
                for (int j = 0; j < lastList.size(); j++) {
                    String s = lastList.elementAt(j).toString();
                    System.out.println(s);
                }
                createNewFile(lastList, tempcell);
                dosyaSayisi = dosyaSayisi + 1;
                for (int j = 0; j < lastList.size(); j++) {
                    genelList.addElement(lastList.elementAt(j));
                }
                lastList.removeAllElements();
                lastList.addElement(cellStoreVector);
                tempcell = myCell.toString().trim();
            }
        }
        System.out.println(dosyaSayisi + " adet dosya oluşturulmuştur.");
        System.out.println("Toplam Yazılan Satır Sayısı" + rowCounter);
    }
 
    private static void createNewFile(Vector v, String fileName) throws IOException {
 
        String allFileName = "D:\\myfolder\\" + fileName + "-" + v.size() + ".xls";
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("kitaplar");
       
        rowCounter = rowCounter + v.size();
        for (int i = 0; i < v.size(); i++) {
            Vector cellStoreVector = (Vector) v.elementAt(i);
            Row row = sheet.createRow(i + 1);
            for (int j = 0; j < cellStoreVector.size(); j++) {
                Cell cell = row.createCell(j);
                if (j == 0) {
                    cell.setCellValue(i + 1);
                } else {
                    cell.setCellValue((String) cellStoreVector.elementAt(j).toString());
                }
                sheet.autoSizeColumn(j);  // kolon genişliğini otomatik ayarla.
            }
        }
        FileOutputStream out = new FileOutputStream(new File(allFileName));
        workbook.write(out);
        out.close();
    }
}
 
// kod dosyasının sonu.
En güncel teknolojiler hakkında yeni şeyler öğren, bilmediklerini sor, bildiklerini paylaş...
...