Altbilgi içeriğine atla
IRONXL KULLANARAK

C# içinde Excel Dosyalarını Okumanın En İyi Yolu | IronXL Adım Adım Rehber

C#'ta Excel dosyalarını okumak, .NET geliştiricileri için yaygın bir zorluktur. Veri ithalat hattı, raporlama aracı veya toplu işleme sistemi oluşturuyor olsun, elektronik tablo verilerini temiz bir şekilde analiz etmek önemlidir. IronXL, sunucuda Microsoft Office veya COM Interop gerektirmeden XLSX, XLS ve CSV dosyalarıyla ilgilenebilen bir .NET kütüphanesidir. Bu kılavuz, kurulumdan gelişmiş sorgulara kadar tam bir iş akışını çağrıştırarak, projeniz için doğru yaklaşımı seçmenize olanak tanır.

Şimdi IronXL ile başlayın.
green arrow pointer

C#'ta Excel Dosyaları Okumanın En İyi Yolu Nedir?

En iyi yaklaşım, IronXL gibi bağımsız ve Office'e bağlı olmayan bir kutuphane kullanmaktır. Microsoft.Office.Interop.Excel gibi geleneksel yöntemler, Excel'in kurulu olduğu makinelerde çalışır, ancak arka planda bir COM süreci oluşturduğu için sunucu veya konteyner ortamlarda kırılgandır. OpenXML SDK ücretsizdir ve sunucuya güvenlidir, ancak günlük görevler için önemli ölçüde şablon kod gerektiren düşük seviyeli bir XML modeli sunar.

IronXL bu uçlar arasında bir yere oturur. API, geliştiricilerin zaten elektronik tablolar hakkında düşündükleri gibi çalışır -- çalışma kitapları sayfaları içerir, sayfalar hücreler içerir, ve hücreler tiplenmiş değerler taşır. Kutuphanesi format algılama, formül değerlendirme ve kodlamayı dahili olarak ele alır, böylece siz zamanınızı ayrıntılı analiz yerine iş mantığına harcarsınız.

C#'ta Excel Okuma Yaklaşımları Karşılaştırıldı
Yaklaşım Office Gerektiriyor mu? Sunucu Güvenli mi? API Basitliği Format Desteği
COM Interop Evet Hayır Low XLSX, XLS
OpenXML SDK Hayır Evet Low Sadece XLSX
IronXL Hayır Evet High XLSX, XLS, CSV

IronXL Excel okuma dokümantasyonu tüm API yüzeyini kapsar. Şu an için, aşağıdaki bölümler her projede kullanacağınız temel kalıpları göstermektedir.

Bir .NET Projesine IronXL Nasıl Kurulur?

Kurulum, NuGet Paket Yöneticisi kullanarak bir dakikadan az sürer. Proje dizininizde bir terminal açın ve çalıştırın:

dotnet add package IronXl.Excel
dotnet add package IronXl.Excel
SHELL

Alternatif olarak, Visual Studio Paket Yöneticisi Konsolu'nu kullanın:

Install-Package IronXl.Excel
Install-Package IronXl.Excel
SHELL

Kurulumdan sonra, using IronXL; yönergesini elektronik tablo erişimi gerektiren dosyalara ekleyin. Kütüphane .NET 10, .NET 8, .NET 6, .NET Framework 4.6.2 ve .NET Standard 2.0'ı hedefler, bu nedenle çalıştırma ortamını yükseltmeden mevcut projelere sığar. Platforma özgü notlar ve NuGet paket detayları için IronXL kurulum kılavuzuna bakın.

Ekstra çalışma zamanı bileşenleri, kayıt defteri girişleri veya Office lisansları gereksizdir. NuGet paketi, kütüphanenin ihtiyaç duyduğu her şeyi paketler.

Kurulumu Doğrulama

Paket ekledikten sonra, referansın doğru bir şekilde çözümlendiğini doğrulamak için projeyi bir kez derleyin. CS0246 türleri için IronXL hatası görüyorsanız, using IronXL; yönergesinin mevcut olduğunu ve .csproj içindeki hedef çerçevenin desteklenen sürümlerden biri olduğunu kontrol edin. IronXL uyumluluk matrisi tüm doğrulanmış çalışma zamanı hedeflerini listeler.

Excel Çalışma Kitabı Nasıl Yüklenir ve Okunur?

Bir çalışma kitabı yüklemek için tek bir yöntem çağrısı gereklidir. WorkBook.Load bir dosya yolunu kabul eder ve bellekte dosyanın tamamını temsil eden bir WorkBook nesnesi döndürür.

using IronXL;

// Load any supported format -- XLSX, XLS, or CSV
WorkBook workbook = WorkBook.Load("financial_report.xlsx");

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

// Or retrieve a named worksheet
WorkSheet expenses = workbook.GetWorkSheet("Expenses");

Console.WriteLine($"Sheets loaded: {workbook.WorkSheets.Count}");
Console.WriteLine($"Default sheet rows: {worksheet.RowCount}");
using IronXL;

// Load any supported format -- XLSX, XLS, or CSV
WorkBook workbook = WorkBook.Load("financial_report.xlsx");

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

// Or retrieve a named worksheet
WorkSheet expenses = workbook.GetWorkSheet("Expenses");

Console.WriteLine($"Sheets loaded: {workbook.WorkSheets.Count}");
Console.WriteLine($"Default sheet rows: {worksheet.RowCount}");
Imports IronXL

' Load any supported format -- XLSX, XLS, or CSV
Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx")

' Access the first worksheet by position
Dim worksheet As WorkSheet = workbook.WorkSheets(0)

' Or retrieve a named worksheet
Dim expenses As WorkSheet = workbook.GetWorkSheet("Expenses")

Console.WriteLine($"Sheets loaded: {workbook.WorkSheets.Count}")
Console.WriteLine($"Default sheet rows: {worksheet.RowCount}")
$vbLabelText   $csharpLabel

IronXL ile C# içinde Excel Dosyası Okumanın En İyi Yolu: Resim 1 - Yüklenen çalışma kitabının konsolda onay çıktısı

WorkBook nesnesi, tüm çalışma sayfası verilerine erişilebilir olmasını sağlar. Her WorkSheet örneği, dosyadaki bir sekmeye eşlenir. Index (WorkSheets[0]) üzerinden erişim, tek sayfalı dosyalar için güvenilirdir; birden fazla bilinen isimde sekme içeren dosyalarda isimle erişim daha güvenlidir.

IronXL bir hücreyi okurken formülleri otomatik olarak değerlendirir. B10 hücresinde =SUM(B2:B9) bulunuyorsa, sheet["B10"].DecimalValue okumak, formül dizisini değil hesaplanmış toplamı döndürür. Çalışma kitabı yükleme seçenekleri hakkında daha fazla ayrıntı için elektronik tablo yükleme kılavuzuna bakın.

Birden Fazla Çalışma Sayfası ile Çalışmak

Bir çalışma kitabı birden fazla sekme içerdiğinde, workbook.WorkSheets kullanarak bunları numaralandırabilir ve sırayla her birini işleyebilirsiniz. Bu, verilerin ay, departman veya bölgeye göre ayrı sekmelerde bölündüğü dosyalar için kullanışlıdır. WorkSheet.Name özelliği, koşullu işleme veya log işlemleri için kullanabileceğiniz etiketin bir dizesini verir.

Bir Çalışma Sayfasından Hücre Değerleri Nasıl Okunur?

IronXL, her hücrede güçlü bir şekilde türlendirilmiş özellikler sağlar, böylece değerleri manuel ayrıştırma olmadan doğrudan doğru .NET türüne okuyabilirsiniz.

using IronXL;

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

// Address-based access with typed properties
string productName = sheet["A2"].StringValue;
int quantity       = sheet["B2"].IntValue;
decimal price      = sheet["C2"].DecimalValue;
bool inStock       = sheet["D2"].BoolValue;

// Check for empty cells before processing
var statusCell = sheet["E2"];
if (statusCell.Value != null && statusCell.StringValue.Length > 0)
{
    Console.WriteLine($"Status: {statusCell.StringValue}");
}

// Row/column index access (zero-based)
var firstDataCell = sheet.Rows[1].Columns[0];
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}");
using IronXL;

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

// Address-based access with typed properties
string productName = sheet["A2"].StringValue;
int quantity       = sheet["B2"].IntValue;
decimal price      = sheet["C2"].DecimalValue;
bool inStock       = sheet["D2"].BoolValue;

// Check for empty cells before processing
var statusCell = sheet["E2"];
if (statusCell.Value != null && statusCell.StringValue.Length > 0)
{
    Console.WriteLine($"Status: {statusCell.StringValue}");
}

// Row/column index access (zero-based)
var firstDataCell = sheet.Rows[1].Columns[0];
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Load("Products.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Address-based access with typed properties
Dim productName As String = sheet("A2").StringValue
Dim quantity As Integer = sheet("B2").IntValue
Dim price As Decimal = sheet("C2").DecimalValue
Dim inStock As Boolean = sheet("D2").BoolValue

' Check for empty cells before processing
Dim statusCell = sheet("E2")
If statusCell.Value IsNot Nothing AndAlso statusCell.StringValue.Length > 0 Then
    Console.WriteLine($"Status: {statusCell.StringValue}")
End If

' Row/column index access (zero-based)
Dim firstDataCell = sheet.Rows(1).Columns(0)
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}")
$vbLabelText   $csharpLabel

IronXL ile C# içinde Excel Dosyası Okumanın En İyi Yolu: Resim 2 - IronXL ile basit Excel okuma çıktısı

sheet["A2"] sözdizimi, standart Excel notasyonunu kullanır. Sütun harfleri büyük-küçük harf duyarlı değildir ve satır numaraları Excel'in hücreleri etiketlediği gibi 1'den başlar. Hücre değeri okuma belgeleri, tarih olarak biçimlendirilmiş hücreler için DateTimeValue de dahil olmak üzere ek tür erişimcilerini gösterir.

Bir hücre, metin olarak depolanmış bir sayı içerdiğinde (dışa aktarılan elektronik tablolarda yaygın bir veri kalitesi sorunu), StringValue metni olduğu gibi döndürürken, DecimalValue bir çözümleme dener ve başarısızlıkta 0 döndürür. Beklenmedik verileri, üretim kodunda türlendirilmiş bir değer olarak işlemeye başlamadan önce her zaman doğrulayın.

Tarih ve Boolean Hücrelerini İşleme

Excel'deki tarih hücreleri dahili olarak seri numaraları olarak depolanır. IronXL, onları el ile aritmetik yapmadan bir .NET DateTime nesnesine dönüştürmek için DateTimeValue sunar. TRUE veya FALSE içeren hücreler için, BoolValue dize karşılaştırması olmadan doğru boolean'ı döndürür. Bu türlendirilmiş erişiciler, bir sınıf veri türü hatalarını ortadan kaldırır, bu tür hatalar genellikle yapılandırılmış metin tabanlı parse edici ile elektronik tablo okurken ortaya çıkar.

Satır ve Hücre Arasında Nasıl Yineleme Yapılır?

Bir veri kümesini yineleme bir aralık veya bir satır koleksiyonu gerektirir. IronXL her iki yaklaşımı da destekler, ve verinin şekline uymak için birleştirebilirsiniz.

using IronXL;

WorkBook workbook = WorkBook.Load("financial_report.xlsx");
WorkSheet sheet = workbook.WorkSheets[0];

// Iterate a cell range -- skips header row
foreach (var cell in sheet["A2:D100"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}

// Row-by-row with column access
for (int rowIndex = 1; rowIndex < sheet.RowCount; rowIndex++)
{
    var row = sheet.Rows[rowIndex];
    var values = new System.Text.StringBuilder();

    foreach (var cell in row)
    {
        if (cell.Value != null)
            values.Append($"{cell.StringValue}\t");
    }

    Console.WriteLine(values.ToString().TrimEnd());
}
using IronXL;

WorkBook workbook = WorkBook.Load("financial_report.xlsx");
WorkSheet sheet = workbook.WorkSheets[0];

// Iterate a cell range -- skips header row
foreach (var cell in sheet["A2:D100"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}

// Row-by-row with column access
for (int rowIndex = 1; rowIndex < sheet.RowCount; rowIndex++)
{
    var row = sheet.Rows[rowIndex];
    var values = new System.Text.StringBuilder();

    foreach (var cell in row)
    {
        if (cell.Value != null)
            values.Append($"{cell.StringValue}\t");
    }

    Console.WriteLine(values.ToString().TrimEnd());
}
Imports IronXL
Imports System.Text

Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets(0)

' Iterate a cell range -- skips header row
For Each cell In sheet("A2:D100")
    Console.WriteLine($"{cell.AddressString}: {cell.Text}")
Next

' Row-by-row with column access
For rowIndex As Integer = 1 To sheet.RowCount - 1
    Dim row = sheet.Rows(rowIndex)
    Dim values As New StringBuilder()

    For Each cell In row
        If cell.Value IsNot Nothing Then
            values.Append($"{cell.StringValue}" & vbTab)
        End If
    Next

    Console.WriteLine(values.ToString().TrimEnd())
Next
$vbLabelText   $csharpLabel

IronXL ile C# içinde Excel Dosyası Okumanın En İyi Yolu: Resim 3 - Satırlar arasında döngü yürütmek için çıktı

"A2:D100" aralığı dizesi düz bir hücre koleksiyonu oluşturur. Aralıktaki satırlar yukarıdan aşağıya, soldan sağa işlenir. Bu desen, bir List<t>, bir DataTable'ye veya bir veritabanına yönelik dışa aktarma için iyi çalışır.

sheet.RowCount özelliği, çalışma sayfasındaki son kullanılan satırı yansıtır, böylece döngü, veri bittiğinde otomatik olarak sona erer. Aralık Excel tekrar kılavuzu sütun-ilk geçiş gibi ek tekrar kalıplarını kapsar.

Başlık Satırlarını Atlamak

Çoğu elektronik tablo, veri içermek yerine sütun isimlerini tanımlayan bir başlık satırına sahiptir. Aralık yinelemeye, 2. satırdan başlayarak ("A2:D100" gibi) veya başlığı atlamak için index döngüsüne rowIndex = 1'ten başlayarak başlayın. ToDataTable(true) kullanırsanız, IronXL başlık algılamayı otomatik olarak işler ve ilk satırdaki sütun adlarını eşler.

Birden fazla Excel Biçimi Nasıl Ele Alınır?

IronXL dosya biçimini uzantıdan ve dosya başlığından otomatik olarak algılar. API, XLSX, XLS ve CSV dosyaları için aynıdır, bu da aynı parse etme kodunun tüm üç format arasında koşullu mantık olmadan çalıştığı anlamına gelir.

using IronXL;

// Load different formats with identical API
WorkBook xlsxBook = WorkBook.Load("Modern.xlsx");
WorkBook xlsBook  = WorkBook.Load("Legacy.xls");
WorkBook csvBook  = WorkBook.Load("Export.csv");

// Access worksheets identically across formats
WorkSheet sheet1 = xlsxBook.DefaultWorkSheet;
WorkSheet sheet2 = xlsBook.DefaultWorkSheet;
WorkSheet sheet3 = csvBook.DefaultWorkSheet;

// Cross-format conversion -- save XLSX as CSV, or CSV as XLSX
xlsxBook.SaveAs("converted_output.csv");
csvBook.SaveAs("structured_output.xlsx");

Console.WriteLine($"XLSX rows: {sheet1.RowCount}");
Console.WriteLine($"XLS rows:  {sheet2.RowCount}");
Console.WriteLine($"CSV rows:  {sheet3.RowCount}");
using IronXL;

// Load different formats with identical API
WorkBook xlsxBook = WorkBook.Load("Modern.xlsx");
WorkBook xlsBook  = WorkBook.Load("Legacy.xls");
WorkBook csvBook  = WorkBook.Load("Export.csv");

// Access worksheets identically across formats
WorkSheet sheet1 = xlsxBook.DefaultWorkSheet;
WorkSheet sheet2 = xlsBook.DefaultWorkSheet;
WorkSheet sheet3 = csvBook.DefaultWorkSheet;

// Cross-format conversion -- save XLSX as CSV, or CSV as XLSX
xlsxBook.SaveAs("converted_output.csv");
csvBook.SaveAs("structured_output.xlsx");

Console.WriteLine($"XLSX rows: {sheet1.RowCount}");
Console.WriteLine($"XLS rows:  {sheet2.RowCount}");
Console.WriteLine($"CSV rows:  {sheet3.RowCount}");
Imports IronXL

' Load different formats with identical API
Dim xlsxBook As WorkBook = WorkBook.Load("Modern.xlsx")
Dim xlsBook As WorkBook = WorkBook.Load("Legacy.xls")
Dim csvBook As WorkBook = WorkBook.Load("Export.csv")

' Access worksheets identically across formats
Dim sheet1 As WorkSheet = xlsxBook.DefaultWorkSheet
Dim sheet2 As WorkSheet = xlsBook.DefaultWorkSheet
Dim sheet3 As WorkSheet = csvBook.DefaultWorkSheet

' Cross-format conversion -- save XLSX as CSV, or CSV as XLSX
xlsxBook.SaveAs("converted_output.csv")
csvBook.SaveAs("structured_output.xlsx")

Console.WriteLine($"XLSX rows: {sheet1.RowCount}")
Console.WriteLine($"XLS rows:  {sheet2.RowCount}")
Console.WriteLine($"CSV rows:  {sheet3.RowCount}")
$vbLabelText   $csharpLabel

CSV dosyaları için, IronXL virgüller içeren alıntılı alanlar, alıntılı değerlerin içindeki yeni satırlar ve kaçışlı çift tırnaklar dahil RFC 4180 kurallarına uyar. CSV'den XLSX'e dönüştürme kılavuzu, standart olmayan CSV dışa aktarımları için sınırlayıcı özelleştirmesini kapsar.

Uygulamanızın dış sistemlerden dosya kabul etmesi gerektiğinde, dosya uzantısını incelemek ve yüklemeden önce içeriği doğrulamak iyi bir uygulamadır. IronXL, dosya bozulmuşsa veya desteklenmeyen bir formattaysa tanımlayıcı bir istisna atar, bu kullanıcılara iletilebilir.

Excel Verilerinde Gelişmiş Sorgular Nasıl Çalıştırılır?

Hücre bazında okuma ötesinde, IronXL bir çalışma sayfası aralığını sorgulanabilir bir koleksiyona dönüştüren toplu işlevler ve LINQ uyumluluğu sunar.

using IronXL;
using System.Linq;

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

// Built-in aggregates -- no manual looping needed
decimal totalSales = sheet["B2:B50"].Sum();
decimal maxRevenue = sheet["C2:C50"].Max(c => c.DecimalValue);
decimal avgMargin  = sheet["D2:D50"].Avg();

// LINQ filtering directly on a range
var highValueRows = sheet["C2:C50"]
    .Where(c => c.DecimalValue > 1000)
    .Select(c => new { c.AddressString, c.DecimalValue });

foreach (var row in highValueRows)
    Console.WriteLine($"High value at {row.AddressString}: {row.DecimalValue:C}");

// Write a calculated result back to the sheet
sheet["E2"].Value = totalSales;
workbook.SaveAs("Financials_Updated.xlsx");

Console.WriteLine($"Total: {totalSales:C}, Max: {maxRevenue:C}, Avg: {avgMargin:C}");
using IronXL;
using System.Linq;

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

// Built-in aggregates -- no manual looping needed
decimal totalSales = sheet["B2:B50"].Sum();
decimal maxRevenue = sheet["C2:C50"].Max(c => c.DecimalValue);
decimal avgMargin  = sheet["D2:D50"].Avg();

// LINQ filtering directly on a range
var highValueRows = sheet["C2:C50"]
    .Where(c => c.DecimalValue > 1000)
    .Select(c => new { c.AddressString, c.DecimalValue });

foreach (var row in highValueRows)
    Console.WriteLine($"High value at {row.AddressString}: {row.DecimalValue:C}");

// Write a calculated result back to the sheet
sheet["E2"].Value = totalSales;
workbook.SaveAs("Financials_Updated.xlsx");

Console.WriteLine($"Total: {totalSales:C}, Max: {maxRevenue:C}, Avg: {avgMargin:C}");
Imports IronXL
Imports System.Linq

Dim workbook As WorkBook = WorkBook.Load("Financials.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Built-in aggregates -- no manual looping needed
Dim totalSales As Decimal = sheet("B2:B50").Sum()
Dim maxRevenue As Decimal = sheet("C2:C50").Max(Function(c) c.DecimalValue)
Dim avgMargin As Decimal = sheet("D2:D50").Avg()

' LINQ filtering directly on a range
Dim highValueRows = sheet("C2:C50") _
    .Where(Function(c) c.DecimalValue > 1000) _
    .Select(Function(c) New With {Key .AddressString = c.AddressString, Key .DecimalValue = c.DecimalValue})

For Each row In highValueRows
    Console.WriteLine($"High value at {row.AddressString}: {row.DecimalValue:C}")
Next

' Write a calculated result back to the sheet
sheet("E2").Value = totalSales
workbook.SaveAs("Financials_Updated.xlsx")

Console.WriteLine($"Total: {totalSales:C}, Max: {maxRevenue:C}, Avg: {avgMargin:C}")
$vbLabelText   $csharpLabel

IronXL ile C# içinde Excel Dosyası Okumanın En İyi Yolu: Resim 4 - Gelişmiş Okuma İşlemleri Konsol Çıktısı

LINQ uyumluluğu, bir veritabanına yüklemeden önce satırları filtrelemeniz gerektiğinde veya bir sütundaki tüm değerlerin bir eşiği karşılayıp karşılamadığını doğrularken faydalıdır. Kütüphane, LINQ çalışmadan önce formülleri değerlendirir, böylece toplu sorgular her zaman formül stringleri yerine nihai hesaplanmış değerler üzerinde çalışır.

IronXL ile LINQ öğreticisi çalışma sayfalarını birleştirme, sütuna göre gruplama ve sonuçları güçlü bir şekilde türlendirilmiş nesnelere projelendirme -- veri boru hattı kodunda çok fazla şablonu ortadan kaldıran kalıpları kapsar.

Excel Verileri Nasıl DataTable'a Aktarılır?

Birçok .NET uygulaması, daha fazla işlem yapmak veya veritabanına eklemek için bir ADO.NET DataTable yükler. IronXL, manuel sütun map'ine gerek kalmadan doğrudan bir dönüşüm yöntemi sunar.

using IronXL;
using System.Data;

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

// Convert worksheet to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);

Console.WriteLine($"Columns: {dataTable.Columns.Count}");
Console.WriteLine($"Rows:    {dataTable.Rows.Count}");

// Iterate the DataTable normally
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"{row["ProductName"]} -- {row["Quantity"]} -- {row["Price"]}");
}
using IronXL;
using System.Data;

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

// Convert worksheet to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);

Console.WriteLine($"Columns: {dataTable.Columns.Count}");
Console.WriteLine($"Rows:    {dataTable.Rows.Count}");

// Iterate the DataTable normally
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"{row["ProductName"]} -- {row["Quantity"]} -- {row["Price"]}");
}
Imports IronXL
Imports System.Data

Dim workbook As WorkBook = WorkBook.Load("SalesData.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Convert worksheet to DataTable -- first row becomes column headers
Dim dataTable As DataTable = sheet.ToDataTable(True)

Console.WriteLine($"Columns: {dataTable.Columns.Count}")
Console.WriteLine($"Rows:    {dataTable.Rows.Count}")

' Iterate the DataTable normally
For Each row As DataRow In dataTable.Rows
    Console.WriteLine($"{row("ProductName")} -- {row("Quantity")} -- {row("Price")}")
Next
$vbLabelText   $csharpLabel

true bir ToDataTable ile geçirildiğinde, ilk çalışma sayfası satırı sütun başlıkları olarak ele alınır. Ortaya çıkan DataTable, başlık metniyle eşleşen dize sütun adlarını kullanır ve ardından LINQ-to-DataSet sorgularını okunabilir hale getirir. DataTable çıkarma dokümantasyonu null-işleme ve tür tahmini seçeneklerini kapsar.

Bu desen, aşağı akış kodunun zaten bir DataTable beklediği durumlarda özellikle faydalıdır -- örneğin, SQL Server'a satır eklemek için SqlBulkCopy çağrıldığında. XLSX dosyasını yükleyebilir, bir DataTable dönüştürebilir ve herhangi bir sütun eşleme ek kodu yazmadan toplu yükleyebilirsiniz.

IronXL Temel Okuma API Referansı
Operasyon API Döner
Dosyayı Yükle WorkBook.Load(path) WorkBook
İndeks ile çalışma sayfasını al workbook.WorkSheets[0] WorkSheet
İsimle çalışma sayfasını al workbook.GetWorkSheet("name") WorkSheet
String hücreyi oku sheet["A1"].StringValue string
Ondalık hücreyi oku sheet["B1"].DecimalValue decimal
Aralığı yineleme foreach cell in sheet["A2:D100"] IEnumerable
Bir aralığı toplama sheet["B2:B50"].Sum() decimal
DataTable'ye aktar sheet.ToDataTable(true) DataTable

Tam bir API listesini görmek için IronXL API referansına bakınız. Referans, her özelliği ve metodu, parametre açıklamaları ve dönüş türü detayları ile kapsar.

Sıradaki Adımlarınız Neler?

C# dilinde Excel dosyalarını okumak, doğru kütüphaneye sahip olduğunuzda kolaydır. IronXL, Office bağımlılığını ortadan kaldırır, API yüzeyini basitleştirir ve aynı kod yolunu kullanarak XLSX, XLS ve CSV formatlarını işler. Burada ele alınan desenler -- bir çalışma kitabı yükleme, türlenmiş hücre değerlerini okuma, aralıkları yineleme, toplu işlemler yürütme ve DataTable'ye dışa aktarma -- gerçek dünya elektronik tablo okuma gereksinimlerinin çoğunu kapsar.

Bu desenler üzerinde inşa etmeye devam etmek için:

IronXL'ı diğer kütüphanelere karşı değerlendiren ekipler için, IronXL vs EPPlus karşılaştırması ve IronXL vs NPOI karşılaştırması performans kıyaslamaları ve API farklılıklarını kapsar. Her iki karşılaştırma da her kütüphanede eşdeğer işlemler için kod örnekleri içerir.

Microsoft'un kendi Excel dosya formatı spesifikasyonu, eski sistemlerden gelen sıra dışı hesap tablosu yapılarıyla karşılaştığınızda faydalı bir referanstır. ECMA-376 standardı, XLSX dosyalarının takip ettiği OOXML formatını tanımlar.

ücretsiz IronXL deneme lisansı ile üretim lisansına geçmeden önce kendi projenizde tam API'yi test edebilirsiniz.

Sıkça Sorulan Sorular

C# içinde Excel dosyalarını okumanın en iyi yolu nedir?

C# içinde Excel dosyalarını okumanın en iyi yolu, IronXL gibi adanmış, Office bagimsiz bir kütüphane kullanmaktır. Bu, Microsoft Excel veya COM Interop gereksinimi olmadan XLSX, XLS ve CSV formatlarını işleyerek sunucu ve konteyner ortamları için güvenli yapar.

IronXL kullanmak için Microsoft Office yüklemeye ihtiyaçınız var mı?

Hayir. IronXL, bir NuGet paketi olarak dağıtilan bagimsiz bir .NET kütüphanesidir. Makinede Microsoft Office, Excel veya herhangi bir COM bileşeni gerektirmez.

IronXL hangi Excel dosya formatlarını destekliyor?

IronXL, XLSX, XLS ve CSV dosyalarını okur ve yazar. Format tanima, dosya uzantısına ve içerik başlıgına dayalı olarak otomatik olur.

IronXL'i bir .NET projesine nasil yuklersiniz?

Terminalde 'dotnet add package IronXl.Excel' yazarak veya Visual Studio Package Manager Console'da 'Install-Package IronXl.Excel' komutunu calistirarak yukleyebilirsiniz.

IronXL Excel verilerini bir DataTable'a aktarabilir mi?

Evet. WorkSheet.ToDataTable(true) metodu herhangi bir çalışma sayfasını ADO.NET DataTable'a dönüştürür, ve true geçirildiğinde ilk satır sütun başlıkları olarak kullanılır.

IronXL Excel verileri üzerinde LINQ sorgularını destekliyor mu?

Evet. IronXL hücre aralıkları IEnumerable'ı uygular, bu yüzden LINQ metodları gibi Where, Select, Sum, Max ve Avg doğrudan calisma sayfasi üzerinde kullanabilirsiniz.

IronXL Excel formullerini nasil isler?

IronXL formulleri otomatic olarak degerlendirirken bir hücre degerini okurken, bir formula hücresi üzerindeki sheet["B10"].DecimalValue okurken hesaplanmis sonucu dondurur, formula dizgisini dondurmez.

IronXL hangi .NET sürümlerini destekliyor?

IronXL, .NET 10, .NET 8, .NET 6, .NET Framework 4.6.2 ve .NET Standard 2.0'i destekler.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

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