Java'da Microsoft Office dosya formatlarıyla çalışmanız gerektiğinde Apache POI kütüphanesi oldukça işinize yarayacaktır.
Öncelikle bu adresten kütüphaneyi indirin ve projenize dahil edin. Ben 3.10 sürümünü kullanmaktayım.
#ÖNEMLİ :
Excel dosyalarıyla işlem yaparken kullanacağımız sınıflar, kullandığımız excel formatına göre farklılıklar gösterecek.
Eğer xls(Excel 97-2003) uzantılı dosyalarla çalışacaksanız HSSF etiketine sahip sınıflarla, xlsx uzantısındaki dosyalarda ise XSSF etiketine sahip sınıflarla çalışmalısınız.
Burada her iki format için de kullanımı göreceksiniz. Zaten sadece sınıfların başındaki HSSF kısmını XSSF olarak değiştireceğiz hepsi bu.
1. Apache POI HSSF Kullanarak XLS Uzantılı Excel Dosyalarına Veri Yazmak
Örnekteki amacımız oluşturulan kişi listesini excel dosyasına aktarmak. Bunun için:- Person adında kişileri temsil edecek sınıfı oluştur.
- Test.Main bloğunda kişileri oluştur ve listeye ekle.
- Test.createExcelFile(ArrayList
list) metoduyla listedeki kişileri excel yapısına aktar. - Test.write(HSSFWorkbook wb) metoduyla excel yapısını dosyaya yaz.
public class Person { private String firstName, lastName; private int age; public Person(String firstName, String lastName, int age) { this.firstName = firstName; this.lastName = lastName; this.age = age; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }#TEST SINIFI
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; public class HSSFTest { public static void main(String[] args) { Person p1 = new Person("Murat", "Tekin", 24); Person p2 = new Person("Hande", "Şahin", 32); Person p3 = new Person("Gamze", "Ömür", 26); ArrayListlist = new ArrayList<>(); list.add(p1); list.add(p2); list.add(p3); HSSFTest t = new HSSFTest(); t.createExcelFile(list); } public void createExcelFile(ArrayList list) { //Excel Calisma Kitabini Olustur HSSFWorkbook workbook = new HSSFWorkbook(); //Excel Sayfasi Olustur HSSFSheet sheet = workbook.createSheet("Kişi Listesi"); //Basliklar icin olusturulacak bicim yapisi icin font nesnesi hazirla HSSFFont headerFont = workbook.createFont(); //Yazi stili kalin headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //Yazi rengini belirle headerFont.setColor(IndexedColors.BLUE.getIndex()); //Basliklar icin bicim nesnesini olustur HSSFCellStyle headerStyle = workbook.createCellStyle(); //Hazirladigin Font nesnesini bicime ekle headerStyle.setFont(headerFont); //Basliklari Hazirla Row headerRow = sheet.createRow(0); Cell hname = headerRow.createCell(0); hname.setCellValue("AD"); Cell hlastName = headerRow.createCell(1); hlastName.setCellValue("SOYAD"); Cell hage = headerRow.createCell(2); hage.setCellValue("YAŞ"); //Olusturulan baslik bicimini hucrelere ekle hname.setCellStyle(headerStyle); hlastName.setCellStyle(headerStyle); hage.setCellStyle(headerStyle); //Listeyi Yaz for(int i = 0; i < list.size(); i++) { //Olusturdugumuz sayfa icerisinde yeni bir satir olustur //i+1 nedeni 0. satır yani ilk satira basliklari yazdigimiz icin 0 dan baslatmadik Row row = sheet.createRow(i+1); //Ilgili satir icin yeni bir hucre olustur Cell name = row.createCell(0); name.setCellValue(list.get(i).getFirstName()); Cell lastName = row.createCell(1); lastName.setCellValue(list.get(i).getLastName()); Cell age = row.createCell(2); age.setCellValue(list.get(i).getAge()); } //Olusturulan Excel Nesnesini Dosyaya Yaz write(workbook); } public void write(HSSFWorkbook workbook) { try { FileOutputStream out = new FileOutputStream(new File("K:\\liste.xls")); workbook.write(out); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
1. Apache POI XSSF Kullanarak XLSX Uzantılı Excel Dosyalarına Veri Yazmak
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class XSSFTest { public static void main(String[] args) { Person p1 = new Person("Murat", "Tekin", 24); Person p2 = new Person("Hande", "Şahin", 32); Person p3 = new Person("Gamze", "Ömür", 26); ArrayList#ÇIKTI :list = new ArrayList<>(); list.add(p1); list.add(p2); list.add(p3); XSSFTest t = new XSSFTest(); t.createExcelFile(list); } public void createExcelFile(ArrayList list) { //Excel Calisma Kitabini Olustur XSSFWorkbook workbook = new XSSFWorkbook(); //Excel Sayfasi Olustur XSSFSheet sheet = workbook.createSheet("Kişi Listesi"); //Basliklar icin olusturulacak bicim yapisi icin font nesnesi hazirla XSSFFont headerFont = workbook.createFont(); //Yazi stili kalin headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //Yazi rengini belirle headerFont.setColor(IndexedColors.BLUE.getIndex()); //Basliklar icin bicim nesnesini olustur XSSFCellStyle headerStyle = workbook.createCellStyle(); //Hazirladigin Font nesnesini bicime ekle headerStyle.setFont(headerFont); //Basliklari Hazirla Row headerRow = sheet.createRow(0); Cell hname = headerRow.createCell(0); hname.setCellValue("AD"); Cell hlastName = headerRow.createCell(1); hlastName.setCellValue("SOYAD"); Cell hage = headerRow.createCell(2); hage.setCellValue("YAŞ"); //Olusturulan baslik bicimini hucrelere ekle hname.setCellStyle(headerStyle); hlastName.setCellStyle(headerStyle); hage.setCellStyle(headerStyle); //Listeyi Yaz for(int i = 0; i < list.size(); i++) { //Olusturdugumuz sayfa icerisinde yeni bir satir olustur //i+1 yazmamizin nedeni 0. satir yani ilk satira basliklari yazdigimizdan 0 dan baslatmadik Row row = sheet.createRow(i+1); //Ilgili satir icin yeni bir hucre olustur Cell name = row.createCell(0); name.setCellValue(list.get(i).getFirstName()); Cell lastName = row.createCell(1); lastName.setCellValue(list.get(i).getLastName()); Cell age = row.createCell(2); age.setCellValue(list.get(i).getAge()); } //Olusturulan Excel Nesnesini Dosyaya Yaz write(workbook); } public void write(XSSFWorkbook workbook) { try { FileOutputStream out = new FileOutputStream(new File("K:\\liste.xlsx")); workbook.write(out); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
0 yorum:
Yorum Gönder