IRONSOFTWAREHOME
IRONXL KULLANARAK

C# ile Yüklü Olmadan Open Office Excel Dosyalarını Nasıl Okunur

Curtis Chau
Curtis Chau
Updated: 28 Haziran 2026

Açık Belge Hesap Tablosu (ODS) ve Excel dosyalarını C# dilinde okumak ve işlemek, doğru kütüphane kullanıldığında basittir. IronXL ile herhangi bir XLS, XLSX, ODS veya CSV dosyasını tek bir metot çağrısıyla WorkBook nesnesine yükleyebilirsiniz—Microsoft Excel kurulumu gerekmez, COM kaydı gerekmez ve Interop sorunları yoktur. Bu kılavuz, paketin kurulması, dosyaların yüklenmesi, türlenmiş hücre değerlerinin çıkarılması, adlandırılmış çalışma tablolarıyla çalışma, birleştirilmiş hücrelerin işlenmesi ve Linux veya konteyner tabanlı ortamlara dağıtılması gibi her adımı size anlatır.

.NET Projesine IronXL Nasıl Kurulur?

NuGet Paket Yöneticisi Kurulumu

NuGet Paket Yöneticisi aracılığıyla projenize IronXL ekleyin. Visual Studio'da Paket Yöneticisi Konsolunu açın ve şu komutu çalıştırın:

PM > Install-Package IronXL.Excel

IronXL, hem modern hem de eski kod tabanlarına uygun şekilde .NET 8, .NET 9, .NET 10, .NET Framework 4.6.2+ ve .NET Standard 2.0'ı hedefler. Paket yüklendikten sonra, elektronik tablolarla çalışan herhangi bir dosyanın en üstüne using IronXL; yönergesini ekleyin ve ilk çalışma kitabınızı yüklemeye hazırsınız.

Azure Functions, Docker konteynerleri veya Linux'ta barındırılan API'ler için ek bir çalışma zamanı yapılandırması gerekmez. Kütüphane, ihtiyaç duyduğu her şeyi içsel olarak paketler ve Excel otomasyon bileşenlerine çağrı yapmaz.

OpenOffice veya Excel Dosyasını C#'da Nasıl Yükleriz?

IronXL, WorkBook.Load yöntemi aracılığıyla ODS, XLS, XLSX ve CSV dosyalarını aynı şekilde işler. Mutlak veya görece bir dosya yolu verir ve kütüphane yalnızca uzantıdan değil, dosya başlığından biçimi algılar. Bu, .ods adlı bir dosyanın .xlsx olarak yeniden adlandırıldığında hala doğru şekilde okunduğu anlamına gelir.

using IronXL;

// Load an OpenDocument Spreadsheet (.ods) produced by LibreOffice Calc or OpenOffice
WorkBook workbook = WorkBook.Load("quarterly_report.ods");

// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];

// Read a cell value
string companyName = sheet["A1"].StringValue;
int recordCount   = sheet["B1"].IntValue;

Console.WriteLine($"Company : {companyName}");
Console.WriteLine($"Records : {recordCount}");

Aynı çağrı XLSX ve XLS dosyalarında çalışır -- sadece yolu değiştirin. WorkBook.Load kaynağın formatından bağımsız olarak aynı güçlü dönüştürülmüş nesneyi döndürür, böylece dosya Microsoft Excel, LibreOffice veya herhangi bir başka ODF uyumlu uygulamadan gelse bile kodunuzun geri kalanı aynı kalır.

Bir Çalışma Sayfasındaki Her Satırı ve Hücreyi Nasıl Okursunuz?

Satır Koleksiyonunu Yineleme

Tüm satırları ve hücreleri yinelemek, en yaygın Excel işleme görevlerinden biridir -- ister veri ithalatı doğrulaması yapıyor olun, ister kayıtları dönüştürüyor, ister raporlama hattını besliyor olun. IronXL, her bir WorkSheet için bir Rows koleksiyonu sağlar:

using IronXL;

WorkBook workbook  = WorkBook.Load("customers.xlsx");
WorkSheet worksheet = workbook.WorkSheets[0];

Console.WriteLine($"Total rows    : {worksheet.RowCount}");
Console.WriteLine($"Total columns : {worksheet.ColumnCount}");
Console.WriteLine();

foreach (var row in worksheet.Rows)
{
    foreach (var cell in row)
    {
        if (!cell.IsEmpty)
            Console.Write($"{cell.StringValue,-20}");
    }
    Console.WriteLine();
}

RowCount ve ColumnCount özellikleri yalnızca doldurulmuş aralığı döndürür -- boş son satır ve sütunlar dahil edilmez. cell.IsEmpty kontrolü, seyrek sayfalarda gereksiz işlemeyi önlemek için okumadan önce yapılmalıdır.

Büyük dosyalar için, tüm sayfa iterasyonu yerine aralık tabanlı erişim kullanmayı (worksheet["A1:D500"]) düşünün. Bu, belleğe yüklenen hücreleri sınırlar ve yalnızca verinin bir alt kümesine ihtiyaç duyduğunuzda işleme hızını arttırır.

Hücrelerden Türlenmiş Değerler Nasıl Çıkartılır?

Türlenmiş Öğe Erişimcileri

Gerçek dünya hesap tablolarındaki hücreler, string, integer, decimal, boolean ve tarih gibi veriler içerir. IronXL, ham stringleri elle ayrıştırmak zorunda kalmadan kullanılabilecek, özel türlenmiş özellikler sağlar:

using IronXL;

WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet   = workbook.GetWorkSheet("Products");

// Typed accessors handle conversion automatically
string  productName = sheet["A2"].StringValue;
int     quantity    = sheet["B2"].IntValue;
decimal unitPrice   = sheet["C2"].DecimalValue;
bool    inStock     = sheet["D2"].BoolValue;
DateTime? lastAudit = sheet["E2"].DateTimeValue;

Console.WriteLine($"Product  : {productName}");
Console.WriteLine($"Qty      : {quantity}");
Console.WriteLine($"Price    : {unitPrice:C}");
Console.WriteLine($"In Stock : {inStock}");
Console.WriteLine($"Audited  : {lastAudit?.ToString("d") ?? "Never"}");

Bir hücre formül tuttuğunda, IronXL bunu değerlendirir ve aynı türlenmiş özellikler üzerinden hesaplanmış sonucu döndürür. Ayrı bir değerlendirme yöntemi çağırmanıza gerek yoktur. Kütüphane, boş veya uyumsuz bir tür içerebilecek hücreler için istisna fırlatmak yerine varsayılan değeri döndürür, bu da girdi doğrulama mantığını basitleştirir.

IronXL Hücre Değer Özellikleri ve Eşdeğer .NET Türleri
Özellik.NET TürüBoş Olduğunda DöndürürAçıklamalar
StringValuestringBoş dizgiHer zaman güvenlidir; herhangi bir hücreyi metne dönüştürür
IntValueint0Ondalıkları keser
DecimalValuedecimal0mMali veri için hassasiyeti korur
DoubleValuedouble0.0Bilimsel veya istatistiksel değerler için kullanın
BoolValueboolfalseExcel TRUE/FALSE hücrelerini okur
DateTimeValueDateTime?nullNullable -- kullanmadan önce kontrol edin

Birden Fazla İsimlendirilmiş Çalışma Sayfası ile Nasıl Çalışırsınız?

İsim, İndeks veya Yineleme ile Erişim

Kurumsal elektronik tablolar genellikle birden fazla isimlendirilmiş sayfa içerir -- her ay için bir, her bölge için bir veya her ürün hattı için bir. IronXL bunlara erişmek için birden fazla yol sunar:

using IronXL;

WorkBook workbook = WorkBook.Load("annual_sales.xlsx");

// Option 1: access by name (throws if the sheet does not exist)
WorkSheet januarySheet = workbook.GetWorkSheet("January");

// Option 2: iterate all sheets in the workbook
foreach (WorkSheet ws in workbook.WorkSheets)
{
    Console.WriteLine($"Sheet: {ws.Name}  |  Rows: {ws.RowCount}");

    // Read the header row from each sheet
    string header = ws["A1"].StringValue;
    Console.WriteLine($"  Header: {header}");
}

// Option 3: access by zero-based index
WorkSheet lastSheet = workbook.WorkSheets[workbook.WorkSheets.Count - 1];
Console.WriteLine($"Last sheet: {lastSheet.Name}");

Tasarım zamanında sayfa adı biliniyorsa, GetWorkSheet en net seçenektir. Dinamik işleme için -- burada sayfa adları kullanıcı girişi veya yapılandırmadan gelir -- WorkSheets koleksiyonunu yinelemek, sabit kodlanmış varsayımları önler ve farklı sayıda sayfa içeren çalışma kitaplarını işler.

Birleştirilmiş Hücreler ve Biçimlı Bölgeler Nasıl Yönetilir?

Raporlar ve panolar, sıklıkla başlıklar, gruplandırılmış etiketler ve özet satırlar için birleştirilmiş hücreler kullanır. IronXL, birleştirilmiş bir bölgenin sol üst hücresinden değeri okur, tıpkı Excel'in gösterdiği gibi:

using IronXL;

WorkBook workbook = WorkBook.Load("report_with_merges.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// The merged region A1:D1 stores its value in cell A1
string reportTitle = sheet["A1"].StringValue;
Console.WriteLine($"Report title : {reportTitle}");

// Read cell formatting metadata
var titleCell = sheet["A1"];
Console.WriteLine($"Bold         : {titleCell.Style.Font.Bold}");
Console.WriteLine($"Font size    : {titleCell.Style.Font.Height}");

// Scan an entire column for non-empty section headers
foreach (var cell in sheet["A1:A100"])
{
    if (!cell.IsEmpty && cell.Style.Font.Bold)
        Console.WriteLine($"Section header at {cell.AddressString}: {cell.StringValue}");
}

Style özelliği ağacı, OOXML SpreadsheetML spesifikasyonunun yapısını yansıtır, bu yüzden daha önce Open XML SDK ile çalıştıysanız, özellik adları size tanıdık gelecektir. Bununla birlikte, IronXL bu karmaşıklığı temiz bir API ile sarar ve tarafınızdan herhangi bir XML manipülasyonu gerektirmez.

Aynı API ile CSV Dosyalarını Nasıl İçe Aktarırsınız?

Veritabanı dışa aktarımları, CRM sistemleri ve eski uygulamalar tarafından üretilen CSV dosyaları aynı WorkBook.Load çağrısı ile okunabilir. IronXL, dosya içeriğinden ayırıcıyı tahmin eder:

using IronXL;

// Load a comma-separated values file -- same method, same API
WorkBook csvWorkbook  = WorkBook.Load("export.csv");
WorkSheet csvSheet    = csvWorkbook.DefaultWorkSheet;

Console.WriteLine($"CSV rows loaded: {csvSheet.RowCount}");

// Process rows exactly like any other worksheet
foreach (var row in csvSheet.Rows)
{
    string id   = row[0].StringValue;
    string name = row[1].StringValue;
    Console.WriteLine($"{id,-10} {name}");
}

Yüklendikten sonra, verileri csvWorkbook.SaveAs("output.xlsx") kullanarak XLSX olarak kaydedebilirsiniz. Bu, CSV'den Excel'e dönüşüm hatları için yaygın bir kalıptır -- bir CSV dosyası almak, hesaplanmış sütunlar veya formatlama ile zenginleştirmek ve kullanıcıya formatlı bir XLSX raporu olarak geri döndürmek.

Tab ile ayrılmış dosyalar ya da özel ayraçlar için, biçimi açıkça belirtmek amacıyla WorkBook.LoadCSV("file.tsv", fileFormat: ExcelFileFormat.TSV) kullanın.

IronXL'deki Desteklenen Giriş Dosya Biçimları
BiçimUzantıTarafından ÜretilmiştirAçıklamalar
XLSX.xlsxExcel 2007+, LibreOfficeVarsayılan modern format; XML tabanlı
XLS.xlsExcel 97--2003İkili format; tam okuma/yazma desteği
ODS.odsLibreOffice, OpenOfficeOpenDocument Electronic Tablo standardı
CSV.csvHerhangi bir uygulamaAyırıcı otomatik algılanır; formatlama yok
TSV.tsvVeritabanı ihracatlarıSekme ile ayrılmış; formatı açıkça belirt

IronXL Microsoft.Office.Interop.Excel ile Nasıl Karşılaştırılır?

Interop, Open XML SDK ve IronXL Yan Yana

.NET'te Excel otomasyonu için IronXL'e en yaygın alternatif Microsoft.Office.Interop.Excel'dir. Tavizleri anlamak, projeniz için doğru aracı seçmenize yardımcı olur.

Microsoft Interop, Excel COM nesne modelini sarmalar. Bu, kodunuzu çalıştıran her makinede -- web sunucuları, derleme ajanları ve bulut VM'leri dahil -- Excel'in kurulu olması gerektiği anlamına gelir. COM nesnesi yaşam döngüsü yönetimi manueldir: Her bir Range, Worksheet ve Workbook nesnesini açıkça serbest bırakmanız gerekir, aksi takdirde arka planda Excel işlemleri birikir ve sunucu yeniden başlatılana kadar bellek tüketir. Lisanslama da bir endişe konusudur: Office EULA birçok senaryoda sunucu tarafı otomasyonu yasaklar.

IronXL bu kısıtlamaların hiçbirine tabi değildir. Tamamen yönetilen bir kütüphanedir, hiçbir COM bağımlılığı yoktur. WorkBook nesnesi standart bir .NET sınıfıdır; çöp toplayıcı temizliği yönetir. Aynı kodu bir geliştirici bilgisayarında, bir Azure App Service'te, bir Docker konteynerinde veya Linux çalıştıran bir Raspberry Pi üzerinde çalıştırabilirsiniz.

Microsoft'un Open XML SDK'sı başka bir alternatiftir. Excel gerektirmeden OOXML dosya formatına doğrudan erişim sağlar, ancak çok düşük seviyede çalışır -- XML elemanlarını doğrudan işlersiniz. Tek bir hücre değerini okumak, paylaşılan dize tablolarını, hücre referanslarını ve stil indekslerini gezinmeyi gerektirir. IronXL, bu kılavuz boyunca gösterilen sheet["A1"].StringValue çağrısını tek satırda toplar.

Excel İşlemeyi Linux ve Docker'a Nasıl Dağıtırsınız?

Sunucu dağıtımları, IronXL'nin Excel'den bağımsızlığının en değerli hale geldiği yerdir. Windows'ta yazdığınız aynı kod, Ubuntu, Alpine Linux veya macOS'ta değiştirilmeden çalışır. Konteynerlenmiş dağıtımlar için Dockerfile'ınız özel bir yapılandırma gerektirmez:

# Standard .NET runtime image -- no Office packages needed
FROM mcr.microsoft.com/dotnet/runtime:10.0
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "ExcelProcessor.dll"]
SHELL

Azure Functions ve AWS Lambda için, IronXL, yönetilen çalıştırma zamanı içerisinde herhangi bir ek yapılandırma gerektirmeden çalışır. Soğuk başlatma yükü minumumdur çünkü bir COM başlatma adımı yoktur.

İş parçacığı güvenliği yerleşiktir: birden fazla iş parçacığı, koordinasyon olmadan farklı WorkBook örneklerini eşzamanlı olarak açabilir. Kullanıcı yüklemeli elektronik tabloları içeren bir arka plan işinde olduğu gibi, binlerce dosyayı paralel olarak işlemeniz gerekiyorsa, herhangi bir bozulma riski olmadan WorkBook örnekleri havuzunda Parallel.ForEach veya Task.WhenAll kullanabilirsiniz.

Bellek kullanımı tahmin edilebilir kalır çünkü IronXL yalnızca istenen çalışma sayfasını belleğe yükler, başlatma sırasında tüm kitabı değil. Çok büyük dosyalar için bu fark önemlidir: on adet 50MB'lık sayfa içeren bir kitap sadece tek bir sayfayı okumak için 500MB RAM gerektirmez. IronXL performans belgeleri, yüksek hacimli dosya işleme senaryolarını ele almak için ek stratejiler içerir.

Sonraki Adımlarınız Neler?

IronXL'yi projenizde doğrulamanın en hızlı yolu, NuGet paketini yüklemek ve bu kılavuzdaki örnekleri ortamınızdaki gerçek bir dosya karşısında çalıştırmaktır. Bir ücretsiz deneme lisansı tüm özelliklerinizi kod değişikliği gerektirmeden kilitler, üretime hazır olduğunuzda.

Dosya okuma işlemini tamamlayan ilgili IronXL yeteneklerini keşfedin:

Lisans, çapraz platform desteği veya belirli dosya formatı gereksinimleri hakkında sorular için, IronXL destek ekibi, canlı sohbet ve e-posta aracılığıyla hizmetinizdedir.

İlk Adım:
arrow pointer
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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez