Altbilgi içeriğine atla
EXCEL ARAçLARı

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.

How to Read Excel Files in Java, Figure 1: Download Binary Distribution File

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.

How to Read Excel Files in Java, Figure 2: JAR Files

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:

How to Read Excel Files in Java, Figure 3: Apache POI Sınıfları

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:

How to Read Excel Files in Java, Figure 4: The Excel File to be Read

Okunacak Excel Dosyası

Java'da Excel Dosyası Okuma Adımları

  1. Herhangi bir Java IDE kullanarak bir Java projesi oluşturun. Bu proje için Netbeans kullanacağız.
  2. Sonraki adımda, projede bir lib klasörü oluşturun.
  3. Ardından, indirilen JAR dosyalarını önceki adımda oluşturulan lib klasörüne ekleyin.
  4. Class-Path ayarlamak 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.
  5. Şimdi, ReadExcelFileDemo adında bir sınıf dosyası oluşturalım.
  6. "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();
    }
}
JAVA

Çı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
SHELL

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();  
        }
    }
}
JAVA

Çı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
SHELL

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.Data Nesneleri — Excel Elektronik Tabloları ile System.Data.DataSet ve System.Data.DataTable nesneleri 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
$vbLabelText   $csharpLabel

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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara