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.
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.
| 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
Alternatif olarak, Visual Studio Paket Yöneticisi Konsolu'nu kullanın:
Install-Package IronXl.Excel
Install-Package IronXl.Excel
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}")

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}")

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

"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}")
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}")

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
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.
| 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:
- Proje kurulum rehberi ve çalışma zamanı gereksinimleri için IronXL ilk adım belgelendirmesini okuyun.
- Yazma, biçimlendirme ve grafik oluşturma için nasıl yapılır rehberlerini keşfedin.
- IronXL'ın hangi Excel fonksiyonlarını otomatik olarak değerlendirdiğini anlamak için Excel formül destek rehberini inceleyin.
- Üretim kullanım seçenekleri için IronXL lisans sayfasını kontrol edin.
- Veri doğrulama, pivot-table aktarımlar ve parola korumalı dosya işleme üzerine detaylı örnekleri kapsayan IronXL bloguna göz atın.
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.




