Java uygulamalarınızdan Excel ile çalışan bir Java Uygulama Geliştiricisi iseniz, uygulamanızdaki Excel verilerini manipüle etme işlevselliğini sağlamak istersiniz. Excel, hücre stilini biçimlendirmenize, bir hücre tipini farklı veri türlerine ayarlamanıza, bir hücreyi farklı renklerle doldurmanıza, vb. Apache Poi, Excel XLSX dosyaları1 programlı olarak manipüle etmek için araçlar sunan Java ve Excel arasında köprü olarak hizmet eder. Bu blog dizisinde, Java’da Apache Poi kullanarak Excel hücre manipülasyonu sanatını açıklayacağız. Kod ve elektronik tabloların sinerjisini inceleyelim ve keşfedelim!

İçerik Tablosu {.wp-blok başlık}

Blog boyunca, aşağıdakiler için kod örnekleri ve bunun açıklamalarından geçeceğiz:

  1. Excel dosyasında hücre oluşturma
  2. Excel’de tarih hücreleri oluşturun
  3. Farklı hücre türleriyle çalışmak
  4. Hücre görünümünü ayarlama

Java’daki Excel dosyasındaki hücrelerle çalışmak

Excel dosyasında hücre oluşturma

//Create Cells
XSSFWorkbook wb = new XSSFWorkbook();
XSSFCreationHelper createHelper = wb.getCreationHelper();
XSSFSheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(0);
// Create a cell and put a value in it.
Cell cell = row.createCell(0);
cell.setCellValue(1);
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue(createHelper.createRichTextString("This is a string"));
row.createCell(3).setCellValue(true);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

Yukarıdaki Java kodu snippet, Apache Poi API’sının bir Excel çalışma kitabındaki hücrelerle çalışmak için kullanımını gösterir. Kod, yeni bir Excel çalışma kitabı oluşturur (\ **xssfworkbook** \), çalışma kitabında bir sayfayı başlatır ve daha sonra hücreleri çeşitli veri türleriyle doldurur. İlk olarak, kod “ yeni sayfa ” adlı yeni bir sayfa oluşturur. Daha sonra sayfadaki dizin 0’da bir satır üretir ve o satırdaki hücreleri doldurmaya devam eder. İlk hücreye (dizin 0) \ **setCellValue** \ yöntemi kullanılarak 1’lik bir tamsayı değeri atanır. Buna karşılık, ikinci hücre (dizin 1) doğrudan \ **createCell** \ yöntemi içinde 1.2 ondalık değere ayarlanır. Üçüncü hücre (dizin 2), \ **creatichTextString** \ yöntemi kullanılarak oluşturulan bir dize değeri “Bu bir dize” içerir. Son olarak, dördüncü hücre (dizin 3) boolean değeri “doğru” ile doldurulur. Hücre değerleri ayarlandıktan sonra, kod ortaya çıkan çalışma kitabını \ **fileOutputStream** \ kullanarak “workbook.xlsx” adlı bir excel dosyasına yazar.

Tarih Oluşturma Türü Hücre {.wp-blok başlığı}

XSSFWorkbook wb = new XSSFWorkbook();
//Workbook wb = new XSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
org.apache.poi.ss.usermodel.Sheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(0);
// Create a cell and put a date value in it.  The first cell is not styled
// as a date.
Cell cell = row.createCell(0);
cell.setCellValue(new Date());
// we style the second cell as a date (and time).  It is important to
// create a new cell style from the workbook otherwise you can end up
// modifying the built in style and effecting not only this cell but other cells.
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(
    createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
cell = row.createCell(1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);
//you can also set date as java.util.Calendar
cell = row.createCell(2);
cell.setCellValue(Calendar.getInstance());
cell.setCellStyle(cellStyle);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

Bu Java kodu snippet, bir Excel çalışma kitabında tarih tipi hücrelerle çalışmak için Apache Poi API’sının kullanımını sergiliyor. Kod, yeni bir Excel çalışma kitabı oluşturarak başlar (\ **xssfworkbook** \). İlk hücre (dizin 0) bir tarih değerini tutmaya yöneliktir. A \ **tarih** \ cari tarih ve saati temsil eden nesne, \ **setcelvalue** \ 'yöntemini kullanarak hücrenin değeri olarak ayarlanır. Bu hücre açıkça tarih olarak şekillendirilmez. İkinci hücre (dizin 1) için, çalışma kitabının \createCellStyle ` yöntemi kullanılarak yeni bir hücre stili (\ cellstyle \ ‘) oluşturulur. Bu stil daha sonra \ setDataFormat \ yöntemi kullanılarak belirli bir tarih ve saat formatına sahip olacak şekilde yapılandırılır. \ CreateAformat (). GetFormat (“ m/d/yy h: mm ”) \ işlemi,“ m/d/yy h: mm ”biçiminde özel bir tarih biçimi oluşturur. İkinci hücreye geçerli tarih ve zaman değeri atanır ve yeni oluşturulan hücre stili, \ setcelstyle ` yöntemi kullanılarak uygulanır. Üçüncü hücre (dizin 2), \ `java.util.calendar \ ‘kullanarak tarih tipi hücreleri doldurmak için alternatif bir yöntem gösterir. İkinci hücreye benzer şekilde, özel hücre stili de bu hücreye uygulanır.

Farklı hücre türleriyle çalışmak {.wp-blok başlığı}

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
Row row = sheet.createRow(2);
row.createCell(0).setCellValue(1.1);
row.createCell(1).setCellValue(new Date());
row.createCell(2).setCellValue(Calendar.getInstance());
row.createCell(3).setCellValue("a string");
row.createCell(4).setCellValue(true);
row.createCell(5).setCellType(CellType.ERROR);		// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

Bu kod örneğinde, aşağıdaki adımlarda açıklandığı gibi Apache Poi API kullanılarak bir Excel dosyasındaki hücrelere farklı hücre stilleri uygulanır.

  1. \ **Creatow** (2) \ kullanılarak sayfadaki dizin 2’de bir satır oluşturulur. Hücreler daha sonra aşağıdaki verilerle bu satır içinde doldurulur.
  2. Birinci hücre (dizin 0) \ **setCellValue** \ yöntemi kullanılarak 1.1’lik bir ondalık değer atanır.
  3. İkinci hücrede (dizin 1), geçerli tarih ve saat \ **setCellValue** \ 'yöntemi aracılığıyla \ tarih ' nesnesi kullanılarak eklenir.
  4. Üçüncü hücre (dizin 2) \ **setcellValue** \ yöntemi kullanılarak ayarlanan \ `takvim \ ‘örneğinden tarih ve saati içerir.
  5. Dördüncü hücre (dizin 3) “bir dize” metnini tutar.
  6. Beşinci hücre (dizin 4) boolean değeri “gerçek” için belirlenmiştir.
  7. İleride, \ **setCellType** \ yöntemini çağırarak altıncı hücreye (dizin 5) belirli bir hücre tipi atanır. Bu hücre, bir hata değeri görüntüleyeceğini gösteren \ **cellType.error** \ numaralandırma kullanılarak bir hata hücresi olarak yapılandırılır. Son olarak, değiştirilmiş çalışma kitabı \ **FileOutputStream** \ kullanılarak “Workbook.xlsx” adlı bir dosyaya yazılmıştır. Özetle, bu kod örneği bir Excel çalışma kitabının nasıl kurulacağını, çeşitli veri türlerini karşılamak için farklı hücre stillerinin nasıl uygulanacağını ve nihayetinde değiştirilmiş çalışma kitabını bir dosyaya kaydetmeyi gösterir. Bu pratik illüstrasyon, Java’daki Excel dosyalarıyla çalışmak için Apache Poi Kütüphanesi’nin yeteneklerini sergiliyor.

Hücre görünümünü ayarlama {.wp-blok başlık}

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(1);
// Aqua background
CellStyle style = wb.createCellStyle();
style.setFillBackgroundColor(IndexedColors.AQUA.getIndex());
style.setFillPattern(FillPatternType.BIG_SPOTS);
Cell cell = row.createCell(1);
cell.setCellValue("X");
cell.setCellStyle(style);
// Orange "foreground", foreground being the fill foreground not the font color.
style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.ORANGE.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell = row.createCell(2);
cell.setCellValue("X");
cell.setCellStyle(style);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}
wb.close();

Bu kod snippet, Java’daki Apache Poi Kütüphanesi’ni kullanarak bir Excel dosyasındaki hücrelerin görünümünün nasıl manipüle edileceğini gösterir. Bu, aşağıdaki adımlar kullanılarak elde edilir.

  1. \ creatow (1) \ kullanılarak sayfadaki dizin 1’de bir satır oluşturulur. Bu satırdaki hücrelerde aşağıdaki değişiklikler yapılır.
  2. İlk hücre için (dizin 1), \ wb.createCellStyle () \ kullanılarak özel bir hücre stili oluşturulur. Bu stil, \ setFillbackgroundColor \ ve \ indexedcolors.Aqua.getIndex () \ 'kullanılarak Aqua arka plan rengi ile yapılandırılmıştır. Arka plan için desen \ setFillPatterN (FillPatterNtype.Big_Spots) ` kullanılarak “büyük noktalar” olarak ayarlanmıştır. Bu satırda dizin 1’de bir hücre oluşturulur ve “x” değeri ile doldurulur. Daha önce oluşturulan stil, \ `setcelstyle \ ‘kullanılarak bu hücreye uygulanır.
  3. İkinci hücre (dizin 2) için yeni bir hücre stili oluşturulur. Bu stil, \ setFillForegroundColor \ 've \' indexedcolors.orange.getIndex () \ 'kullanılarak turuncu bir ön plan renkle tasarlanmıştır. Dolgu deseni \ setFillPatterN (fillpatterNtype.solid_Foregregre) ` kullanılarak “katı ön plan” olarak ayarlanır. Dizin 2’de aynı satırda başka bir hücre oluşturulur ve “x” değeri ile doldurulur. Yeni oluşturulan stil daha sonra \ setcellstyle \ 'kullanılarak bu hücreye atanır. Hücre görünümlerini yapılandırdıktan sonra, değiştirilmiş çalışma kitabı \ fileOutputStream \ ‘kullanılarak“ Workbook.xlsx ”adlı bir dosyaya yazılır. Özetle, bu kod örneği, bir Excel dosyasındaki hücre görünümlerini manipüle etmek için Apache Poi kütüphanesinin nasıl kullanılacağını gösterir. Gösterilen teknikler, arka planı ve ön plan renklerini kontrol etmek için özel hücre stilleri oluşturmanın yanı sıra doldurma desenlerini, Java kullanarak Excel elektronik tablolarının görsel olarak özelleştirilmesinde esneklik sağlamayı içerir.

Sonuç

Apache Poi Kütüphanesi için yukarıdaki tüm Java örneklerinde, Java uygulamanızdaki Excel dosya içeriği ile nasıl çalışılacağını gösterdik. Kod örnekleri, bir Excel dosyasında hücrelerin nasıl oluşturulacağını, bunların görünümünü ayarlayacağını, hücre stilini dize, sayısal, ondalık vb. Java için Apache Poi kullanarak Excel dosyalarıyla çalışmak için daha fazla örnek ekleyeceğiz, bu yüzden bizi izlemeye devam edin.

Ayrıca bkz.