Java Dilinde Excel Dosyasını Okuma (Eğitim)
Excel Nedir?
Microsoft Excel Çalışma Kitabı, kullanıcılarının verileri verimli bir şekilde organize etmelerine ve saklamalarına olanak tanıyan tablo tabanlı bir yazılımdır. Verileri, satır ve sütunlar kullanarak tabular bir biçimde depolar ve düzenler. Excel tablosundaki hücre, veriyi tutan bir kutudur ve farklı stiller, biçimler ve formüllerle manipüle edilebilir.
Java'da Excel Dosyalarını Nasıl Okunur?
Bir Excel dosyasını okumak bazen karışık olabilir. Java'da Excel dosyalarını okumak, Excel hücrelerinden dolayı Java'da Word dosyalarını okumaktan biraz farklıdır. JDK, Microsoft Excel belgelerini okumak veya yazmak için doğrudan bir API sunmaz. Bunun yerine, üçüncü taraf kütüphanesi Apache POI'a güvenmemiz gerekir.
Apache POI Kütüphanesi
POI, "Poor Obfuscation Implementation" anlamına gelir. Apache POI, Microsoft belgelerini okumak ve yazmak için tasarlanmış açık kaynaklı bir Java kütüphanesidir. Microsoft Office'e dayalı çeşitli dosya formatları oluşturmak ve manipüle etmek için bir yol sunar. Apache POI kullanarak, Microsoft Office dosya formatları üzerinde oluşturma, değiştirme ve görüntüleme/okuma işlemleri gerçekleştirilebilir.
Apache POI kütüphanesini İndirin ve Kurun
Başlamak için, POI'nin son sürümünü JAR'larını indireceğiz. http://poi.apache.org/download.html adresine gidin ve Java API ile Excel dosyasını okumak için en son ZIP dosyasını indirin.
Apache POI JAR Dosyalarını İndirin
ZIP dosyasını indirdikten sonra, dosyayı açmanız ve projenizin kod arama yoluna aşağıdaki JAR dosyalarını eklemeniz gerekir. Bu, aşağıda Excel Dosyasından Okuma altında açıklanmıştır.
Apache POI Jar Dosyalarını Java kod arama yoluna ekleyin
Not: Diğer dosyalarla birlikte lib ve ooxml-lib dosyalarını da kopyalayın.
POI'deki Sınıflar ve Arayüzler
Desteklenen XLS ve XLSX dosya formatı sınıfları aşağıdaki gibi kullanılabilir:
Apache POI Sınıfları
XLS ve XLSX dosyalarını Java'da okumak için POI içindeki farklı Java arayüzleri ve sınıfları listesidir:
Workbook arayüzü, HSSFWorkbook ve XSSFWorkbook sınıfları tarafından uygulanır:
- HSSFWorkbook: Bu, XLS dosyasının bir sınıf temsili.
- XSSFWorkbook: Bu, XLSX dosyasının bir sınıf temsili.
Sheet arayüzü, HSSFSheet ve XSSFSheet sınıfları tarafından uygulanır:
- HSSFSheet: Bu, XLS dosyasındaki bir sayfayı temsil eden sınıftır.
- XSSFSheet: Bu, XLSX dosyasındaki bir sayfayı temsil eden sınıftır.
Row arayüzü, HSSFRow ve XSSFRow sınıfları tarafından uygulanır:
- HSSFRow: Bu, XLS dosyasındaki bir sayfadaki satırı temsil eden sınıftır.
- XSSFRow: Bu, XLSX dosyasındaki bir sayfadaki satırı temsil eden sınıftır.
Cell arayüzü, HSSFCell ve XSSFCell sınıfları tarafından uygulanır:
- HSSFCell: Bu, XLS dosyasındaki bir satırdaki hücreyi temsil eden sınıftır.
- XSSFCell: Bu, XLSX dosyasındaki bir satırdaki hücreyi temsil eden sınıftır.
Excel Dosyasından Okuma
Örnek olarak, Java'da aşağıdaki Excel dosyasını okuyacağız:
Okunacak Excel Dosyası
Java'da Excel Dosyası Okuma Adımları
- Herhangi bir Java IDE kullanarak bir Java projesi oluşturun. Bu proje için Netbeans kullanacağız.
- Sonraki adımda, projede bir
libklasörü oluşturun. - Ardından, indirilen JAR dosyalarını önceki adımda oluşturulan
libklasörüne ekleyin. Class-Pathayarlamak için Proje klasörüne sağ tıklayın > Build Path > Add External JARs dosyaları > yukarıdaki tüm JAR dosyalarını seçin > Uygula ve kapat.- Şimdi, ReadExcelFileDemo adında bir sınıf dosyası oluşturalım.
- "studentdata.xls" adında bir Excel dosyası oluşturun ve yukarıdaki verileri veya herhangi bir veriyi içine yazın.
Java'da Excel dosyalarını okumak için kod örneği aşağıdadır:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
public class ReadExcelFileDemo {
public static void main(String[] args) throws IOException {
// Obtain input bytes from a file
FileInputStream fis = new FileInputStream(new File("C:\\demo\\studentdata.xls"));
// Creating workbook instance that refers to .xls file
HSSFWorkbook wb = new HSSFWorkbook(fis);
// Creating a Sheet object to retrieve the object
HSSFSheet sheet = wb.getSheetAt(0);
// Evaluating cell type
FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator();
for (Row row : sheet) {
for (Cell cell : row) {
switch (formulaEvaluator.evaluateInCell(cell).getCellType()) {
case NUMERIC: // Field that represents numeric cell type
// Getting the value of the cell as a number
System.out.print(cell.getNumericCellValue() + "\t\t");
break;
case STRING: // Field that represents string cell type
// Getting the value of the cell as a string
System.out.print(cell.getStringCellValue() + "\t\t");
break;
}
}
System.out.println();
}
// Closing the workbook to free resources
wb.close();
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
public class ReadExcelFileDemo {
public static void main(String[] args) throws IOException {
// Obtain input bytes from a file
FileInputStream fis = new FileInputStream(new File("C:\\demo\\studentdata.xls"));
// Creating workbook instance that refers to .xls file
HSSFWorkbook wb = new HSSFWorkbook(fis);
// Creating a Sheet object to retrieve the object
HSSFSheet sheet = wb.getSheetAt(0);
// Evaluating cell type
FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator();
for (Row row : sheet) {
for (Cell cell : row) {
switch (formulaEvaluator.evaluateInCell(cell).getCellType()) {
case NUMERIC: // Field that represents numeric cell type
// Getting the value of the cell as a number
System.out.print(cell.getNumericCellValue() + "\t\t");
break;
case STRING: // Field that represents string cell type
// Getting the value of the cell as a string
System.out.print(cell.getStringCellValue() + "\t\t");
break;
}
}
System.out.println();
}
// Closing the workbook to free resources
wb.close();
}
}
Çıktı:
Id Names
1 Zeeshan
2 Shoaib
3 Umar
4 Rizwan
5 Ahsan
Id Names
1 Zeeshan
2 Shoaib
3 Umar
4 Rizwan
5 Ahsan
XLSX dosyalarını okumak için adımlar aynıdır, yalnızca aşağıdaki iki ana nokta hariç:
- İlk olarak, dosya formatını .xlsx olarak değiştirin. Aynı "studentdata" dosyası kullanılabilir, ancak .xlsx uzantısı ile.
- İkinci olarak, Java Apache POI'i nasıl içeri aldığımızda bir farklılık vardır. Kod şöyle devam ediyor:
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class XLSXReaderExample {
public static void main(String[] args) {
try {
File file = new File("C:\\demo\\studentdata.xlsx");
FileInputStream fis = new FileInputStream(file);
// Creating Workbook instance that refers to .xlsx file
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheetAt(0);
// Iterating over rows using iterator
Iterator<Row> itr = sheet.iterator();
while (itr.hasNext()) {
Row row = itr.next();
// Iterating over each column in a row
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellType()) {
case NUMERIC: // Field that represents numeric cell type
// Getting the value of the cell as a number
System.out.print(cell.getNumericCellValue() + "\t\t");
break;
case STRING: // Field that represents string cell type
// Getting the value of the cell as a string
System.out.print(cell.getStringCellValue() + "\t\t");
break;
}
}
System.out.println("");
}
// Closing the workbook to free resources
wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class XLSXReaderExample {
public static void main(String[] args) {
try {
File file = new File("C:\\demo\\studentdata.xlsx");
FileInputStream fis = new FileInputStream(file);
// Creating Workbook instance that refers to .xlsx file
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheetAt(0);
// Iterating over rows using iterator
Iterator<Row> itr = sheet.iterator();
while (itr.hasNext()) {
Row row = itr.next();
// Iterating over each column in a row
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellType()) {
case NUMERIC: // Field that represents numeric cell type
// Getting the value of the cell as a number
System.out.print(cell.getNumericCellValue() + "\t\t");
break;
case STRING: // Field that represents string cell type
// Getting the value of the cell as a string
System.out.print(cell.getStringCellValue() + "\t\t");
break;
}
}
System.out.println("");
}
// Closing the workbook to free resources
wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Çıktı:
Id Names
1 Zeeshan
2 Shoaib
3 Umar
4 Rizwan
5 Ahsan
Id Names
1 Zeeshan
2 Shoaib
3 Umar
4 Rizwan
5 Ahsan
The IronXL C# Kütüphanesi
IronXL bağımsız bir .NET kütüphanesidir ve C# kullanarak Microsoft Excel belgelerinin okunması ve düzenlenmesini kolaylaştırır. Ne Microsoft Excel kurulumu gerektirir ne de Interop'a bağımlıdır.
IronXL kullanarak, geliştiriciler hızlı performansla sadece birkaç satır kod yazarak Excel ile ilgili tüm hesaplamaları zahmetsizce gerçekleştirebilir. Bu, iki hücre eklemek, bir sütunun toplamını hesaplamak, bir Excel tablosuna tüm bir sütunu veya tüm bir satırı eklemek, tek ve çoklu satır sütun toplamaları veya IronXL'in yararlı özellikleri aracılığıyla kolaylaştırılan diğer birçok görev için geçerli olabilir.
IronXL, .NET Framework, .NET Core, Mobil, Xamarin, Azure Linux ve macOS'u tamamen destekler.
IronXL Özellik Seti
- XLS/XLSX/CSV/TSV dosyalarından veri yükleme, okuma ve düzenleme.
- XLS/XLSX/CSV/TSV/JSON'a kaydetme ve dışa aktarma.
System.DataNesneleri — Excel Elektronik Tabloları ileSystem.Data.DataSetveSystem.Data.DataTablenesneleri olarak çalışın.- Formüller — Excel formülleri ile çalışır.
- Aralıklar — ["A1:B10"] sözdizimi kullanımı kolaydır.
- Sıralama — satırları, sütunları ve aralıkları sıralayın.
- Stil — görsel stiller, yazı tipi ve yazı tipi boyutu, arka plan deseni, kenarlık, hizalama ve sayı formatları.
IronXL kullanarak C# dilinde bir Excel dosyasını okuma kod örneği aşağıdadır:
using IronXL;
using System.Linq;
public class ExcelReaderExample
{
public static void Main(string[] args)
{
// Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();
// Select cells easily in Excel notation and return the calculated value
int cellValue = sheet["A2"].IntValue;
// Read from Ranges of cells elegantly
foreach (var cell in sheet["A2:A10"]) {
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
}
}
using IronXL;
using System.Linq;
public class ExcelReaderExample
{
public static void Main(string[] args)
{
// Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();
// Select cells easily in Excel notation and return the calculated value
int cellValue = sheet["A2"].IntValue;
// Read from Ranges of cells elegantly
foreach (var cell in sheet["A2:A10"]) {
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
}
}
Imports IronXL
Imports System.Linq
Public Class ExcelReaderExample
Public Shared Sub Main(ByVal args() As String)
' Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets.First()
' Select cells easily in Excel notation and return the calculated value
Dim cellValue As Integer = sheet("A2").IntValue
' Read from Ranges of cells elegantly
For Each cell In sheet("A2:A10")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
End Sub
End Class
IronXL ile çalışmak geliştiricinin işini çok daha kolay hale getirir. Basit ve kullanımı kolay kodu, Excel dosyalarıyla çalışırken yazılımın hata ihtimalini azaltır.
IronXL'yi İndirin ve bugün projelerinizde kullanın.




