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#'da Excel dosyalarını okumak, .NET geliştiriciler için yaygın bir zorluktur. Bir veri ithalat hattı, bir raporlama aracı veya bir toplu işleme sistemi oluşturuyor olun, elektronik tablo verilerini temiz bir şekilde ayıklamak önemlidir. IronXL, sunucuda Microsoft Office veya COM Etkileşimi gerektirmeksizin XLSX, XLS ve CSV dosyalarını işleyen bir .NET kütüphanesidir. Bu kılavuz, kurulumdan ileri sorgulara kadar tüm iş akışını size anlatarak projeniz için doğru yaklaşımı seçebilmenizi sağlar.

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

C# ile Excel Dosyalarını Okumanın En İyi Yöntemi Nedir?

En iyi yaklaşım, IronXL gibi özel, Office bağımsız bir kütüphane kullanmaktır. Microsoft.Office.Interop.Excel gibi geleneksel yöntemler, Excel'in yüklü olduğu makinelerde çalışır, ancak perde arkasında bir COM işlemi başlatacağı için sunucu veya konteyner ortamlarında kırılgandırlar. OpenXML SDK'si ücretsizdir ve sunucu güvenlidir, ancak günlük görevler için önemli miktarda boilerplate gerektiren düşük seviye bir XML modeli sunar.

IronXL bu iki uç arasında yer almaktadır. API, geliştiricilerin hali hazırda elektronik tablolar hakkında düşündüğü şekilde yansır - çalışma kitapları çalışma sayfalarını, çalışma sayfaları hücreleri içerir ve hücreler yazılmış değerleri tutar. Kütüphane, biçim algılamayı, formül değerlendirmesini ve kodlamayı dahili olarak ele aldığından, ayrıntıları ayrıştırmak yerine iş mantığına odaklanabilirsiniz.

C#'da Excel Okuma Yaklaşımlarının Karşılaştırılması
Yaklaşım Office Gerektirir mi? Sunucu Güvenli mi? API Basitliği Biçim Desteği
COM Etkileşimi Evet Hayır Düşük XLSX, XLS
OpenXML SDK Hayır Evet Düşük Sadece XLSX
IronXL Hayır Evet Yüksek XLSX, XLS, CSV

IronXL Excel okuma belgeleri tam API yüzeyine kadar kapsar. Şu anda, aşağıdaki bölümler her projede kullanacağınız temel kalıpları göstermektedir.

.NET Projesine IronXL Nasıl Kurulur?

NuGet Paket Yöneticisini kullanarak kurulum bir dakikadan kısa sürer. Proje dizininizde bir terminal açın ve çalıştırın:

dotnet add package IronXL.Excel

Alternatif olarak, Visual Studio Paket Yöneticisi Konsolunu kullanın:

Install-Package IronXL.Excel

Kurulumdan sonra, e-tablo erişimine ihtiyaç duyan herhangi bir dosyaya using IronXL; direktifini ekleyin. Kütüphane, .NET 10, .NET 8, .NET 6, .NET Framework 4.6.2 ve .NET Standard 2.0'i hedefler, bu nedenle çalışma zamanını yükseltmeden mevcut projelere uyar. Platforma özgü notlar ve NuGet paket ayrıntıları için IronXL kurulum kılavuzuna bakın.

Ek çalışma zamanı bileşenleri, kayıt defteri girdileri veya Office lisansları gerekmemektedir. NuGet paketi, kütüphanenin ihtiyaç duyduğu her şeyi içerir.

Kurulumu Doğrulama

Paket eklendikten sonra, referansın doğru yerleştiğini doğrulamak için projeyi bir kez derleyin. Eğer IronXL türleri için CS0246 hatası görüyorsanız, using IronXL; direktifinin mevcut olduğunu ve .csproj dosyanızdaki hedef framework'un desteklenen sürümlerden biri olduğunu kontrol edin. IronXL uyumluluk matrisi tüm onaylanan çalışma zamanı hedeflerini listeler.

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

Çalışma kitabı yükleme işlemi tek bir metod çağrısı gerektirir. WorkBook.Load, bir dosya yolunu kabul eder ve bellek içinde tüm dosyayı 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

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

WorkBook nesnesi tüm çalışma sayfası verilerini erişilebilir tutar. Her WorkSheet örneği dosyadaki bir sekmeye karşılık gelir. Tek sayfalı dosyalar için indeks (WorkSheets[0]) ile erişmek güvenilirdir; Bilinen isimlere sahip birden çok sekme içeriyorsa, isimle erişim daha güvenlidir.

IronXL, bir hücre okunduğunda formülleri otomatik olarak değerlendirir. Eğer hücre B10 =SUM(B2:B9) içeriyorsa, sheet["B10"].DecimalValue okunduğunda hesaplanmış toplamı, değil formül dizgisini 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 Çok Çalışma Sayfası ile Çalışma

Birden fazla sekme içeren bir çalışma kitabında, onları workbook.WorkSheets ile numaralandırabilir ve sırayla her birini işleyebilirsiniz. Bu, verilerin ay, bölüm veya bölgeye göre ayrı sekmelere ayrıldığı dosyalar için yararlıdır. WorkSheet.Name özelliği, koşullu işlem veya kaydı için kullanabileceğiniz bir dizgi olarak sekme etiketini verir.

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

IronXL, her hücre üzerinde doğrudan doğru .NET türüne değerleri okumak için tercih edilen erişim yolları sağlar.

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

C# ile IronXL kullanarak Excel Dosyasını 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ı 1'den başlar, Excel'in hücreleri nasıl etiketlediğiyle eşleşir. Hücre değeri okuma dokümantasyonu, tarih olarak biçimlendirilmiş hücreler için DateTimeValue dahil olmak üzere ek türlendirilmiş erişimcileri gösterir.

Bir hücre metin olarak saklanan bir sayı içerdiğinde (ihraç edilen e-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 yazılmış bir değer olarak işlemeye başlamadan önce daima doğrulayın.

Tarih ve Boolean Hücreleri İşleme

Excel'deki tarih hücreleri, dahili olarak seri numarası olarak saklanır. IronXL, bunları manuel aritmetik olmadan bir .NET DateTime nesnesine dönüştürmek için DateTimeValue'ı sunar. Hücreler TRUE veya FALSE içerdiğinde, BoolValue dizgi karşılaştırması olmadan doğru booleanı döndürür. Bu türde erişim yolları, yazılmış verileri okurken, yaygın olarak karşılaşılan hatalar sınıfını ortadan kaldırır.

Satır ve Hücreler Arasında Nasıl Dolaşılır?

Veri kümesi arasında dolaşmak bir dizi veya bir satır koleksiyonu gerektirir. IronXL her iki yaklaşımı da destekler ve verilerin şekline uyacak şekilde bunları 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

C# ile IronXL kullanarak Excel Dosyasını Okumanın En İyi Yolu: Resim 3 - Satırlar arasında yineleme için çıktı

Aralık dizgisi "A2:D100" düz bir hücre koleksiyonu oluşturur. Aralıktaki satırlar, üstten alta, soldan sağa işlenir. Bu desen, bir List<t>, DataTable veya veritabanına dışa aktarım için iyi çalışır.

sheet.RowCount özelliği, çalışma sayfasında son kullanılan satırı yansıtır, bu nedenle döngü veri bittiğinde otomatik olarak sona erer. Excel aralığına yineleme kılavuzu, sütun-ilk gezintiyi içeren ek yineleme desenlerini kapsar.

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

Çoğu elektronik tablonun veri içermeyen, sütun adlarını tanımlayan bir başlık satırı vardır. Aralık yinelemesine satır 2'den başlayın (örneğin, "A2:D100") veya başlığı atlamak için indeksi rowIndex = 1'da başlatın. ToDataTable(true) kullanırsanız, IronXL başlık tespitini otomatik olarak halleder ve sütun adlarını ilk satırdan eşler.

Birden Çok Excel Biçimi Nasıl İşlenir?

IronXL, dosya biçimini uzantı ve dosya başlığından otomatik olarak algılar. API, XLSX, XLS ve CSV dosyaları için aynıdır; bu, tüm üç formatta aynı ayrıştırma kodunun 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, alıntılar içinde yeni satırlar ve kaçış çift alıntılar içeren alanlar dahil RFC 4180 normlarına uyar. CSV'den XLSX'e dönüşüm kılavuzu, standart dışı CSV dışa aktarımlar için ayırıcı özelleştirmesini kapsar.

Uygulamanız dış sistemlerden dosya kabul etmek zorunda olduğunda, dosya uzantısını incelemek ve yüklemeden önce içeriği doğrulamak iyi bir uygulamadır. IronXL, dosya bozuksa veya desteklenmeyen bir formattaysa, yakalanabilecek ve kullanıcıya görüntülenecek açık bir istisna fırlatır.

Excel Verilerinde İleri Sorgular Nasıl Çalıştırılır?

Hücre bazında okuma ötesinde, IronXL, bir çalışma sayfası aralığını sorgulanabilir bir koleksiyon haline getiren 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($"Yüksek 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($"Yüksek 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($"Yüksek 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

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

LINQ uyumluluğu, bir veritabanına sunulmadan önce satırları filtrelemeniz gerektiğinde veya bir sütundaki tüm değerlerin bir eşik ölçüsüne uyup uymadığını doğrulamanız gerektiğinde yararlıdır. Kütüphane, LINQ çalışmadan önce formülleri değerlendirir, böylece toplu sorgular her zaman formül dizgeleri yerine nihai hesaplanmış değerler üzerinde çalışır.

IronXL ile LINQ öğreticisi, çalışma sayfalarını birleştirmeyi, sütun bazında gruplandırmayı ve güçlü tiplere dönüştürmeyi kapsar - bu desenler veri boru hattı kodunda gereksiz çok sayıda kodu ortadan kaldırır.

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

Birçok .NET uygulaması, ileri işlem veya veritabanı ekleme için bir ADO.NET DataTable'de e-tablo verilerini yükler. IronXL, manuel sütun eşlemeye gerek kalmayan doğrudan bir dönüştürme 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

İlk çalışma sayfası satırını sütun başlıkları olarak işlerken true'yı ToDataTable'a geçirirsiniz. Ortaya çıkan DataTable, başlık metniyle eşleşen dizgi sütun adlarını kullanır ve bu da sonraki LINQ-to-DataSet sorgularını okunabilir kılar. DataTable dışa aktarma belgeleri, null işleme ve tür çıkarımı seçeneklerini kapsar.

Bu desen, aşağı akış kodunun zaten bir DataTable beklenti içinde olduğu durumlarda özellikle yararlıdır -- örneğin, SQL Server'a satır eklemek için SqlBulkCopy çağrısı yapıldığında. XLSX dosyasını yükleyebilir, bir DataTable'ye dönüştürebilir ve herhangi bir sütun eşleme şablonu yazmadan büyük ölçekte ekleyebilirsiniz.

IronXL Çekirdek Okuma API Referansı
İşlemler API Döndürür
Dosya yükle WorkBook.Load(path) WorkBook
İndeks ile çalışma sayfasını al workbook.WorkSheets[0] WorkSheet
Ad ile çalışma sayfasını al workbook.GetWorkSheet("name") WorkSheet
Dize hücre oku sheet["A1"].StringValue string
Ondalık hücre oku sheet["B1"].DecimalValue decimal
Aralıkta dolaş foreach cell in sheet["A2:D100"] IEnumerable<Cell>
Bir aralığın toplamını al sheet["B2:B50"].Sum() decimal
DataTable'a Dışa Aktar sheet.ToDataTable(true) DataTable

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

Sonraki Adımlarınız Neler?

C#'da Excel dosyalarını okumak, doğru kütüphaneye sahip olduğunuzda oldukça basittir. IronXL, Office bağımlılığını ortadan kaldırır, API yüzeyini basitleştirir ve XLSX, XLS ve CSV formatlarını aynı kod yolu ile işler. Burada ele alınan desenler -- bir çalışma kitabı yüklemek, türlendirilmiş hücre değerlerini okumak, aralıkları yinelemek, toplama işlemlerini çalıştırmak ve bir DataTable'a dışa aktarmak -- gerçek dünya e-tablo okuma gereksinimlerinin çoğunu kapsar.

Bu kalıplara dayanmaya devam etmek için:

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

Microsoft'un Excel dosya formatı spesifikasyonu, eski sistemlerden gelen alışılmadık elektronik tablo yapılarıyla karşılaştığınızda faydalı bir referans olabilir. ECMA-376 standardı, XLSX dosyalarının takip ettiği OOXML formatını tanımlar.

Üretim lisansına geçmeden önce kendi projenizde tam API'yi test etmek için bir ücretsiz IronXL deneme lisansı ile başlayın.

Sıkça Sorulan Sorular

C#'da Excel dosyalarını okumak için en iyi yöntem nedir?

C#'da Excel dosyalarını okumanın en iyi yolu, IronXL gibi Office'ten bağımsız bir kütüphane kullanmaktır. XLSX, XLS ve CSV formatlarını Microsoft Excel veya COM Interop gerektirmeden işler, bu da sunucu ve konteyner ortamları için güvenlidir.

IronXL kullanmak için bilgisayarınıza Microsoft Office yüklemeniz gerekiyor mu?

Hayır. IronXL bağımsız bir .NET kütüphanesi olarak dağıtılır. Makinede Microsoft Office, Excel veya herhangi bir COM bileşeni gerektirmez.

IronXL hangi Excel dosya formatlarını destekler?

IronXL, XLSX, XLS ve CSV dosyalarını okur ve yazar. Dosya uzantısına ve içerik başlığına göre format algılama otomatik olarak yapılır.

.NET projesine IronXL nasıl kurulur?

Terminalde 'dotnet add package IronXL.Excel' veya Visual Studio Paket Yöneticisi Konsolu'nda 'Install-Package IronXL.Excel' çalıştırın.

IronXL Excel verilerini bir DataTable'a aktarabilir mi?

Evet. WorkSheet.ToDataTable(true) yöntemi, herhangi bir çalışma sayfasını ADO.NET DataTable'a dönüştürür, 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 nedenle LINQ yöntemlerini olanak sağlar.

IronXL, Excel formüllerini nasıl yönetiyor?

IronXL ne zaman bir hücre değerini okursanız, formülleri otomatik olarak değerlendirir. Formül hücresindeki sheet["B10"].DecimalValue okunduğunda hesaplanan sonucu döndürür, formül dizgesini değil.

IronXL hangi .NET sürümlerini destekler?

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

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