VB.NET Dizilere Excel Dosyasi Okuma: IronXL vs Microsoft Interop
VB.NET'te Excel verilerini dizilere okumak, bir çalışma kitabını yüklemeyi, bir çalışma sayfası seçmeyi, satır ve sütunları yinelemeyi ve her hücre değerini iki boyutlu bir diziye depolamayı gerektirir. IronXL ile, bunu Microsoft Office'i yüklemeden birkaç satırda başarırsınız. NuGet paketini yükleyin, WorkBook.Load çağırın, bir Range alın, ardından dizinizi doldurmak için Rows koleksiyonunu döngüye alın.
Ücretsiz denemenizi başlatın ve IronXL'nin Visual Studio projelerinizde Excel otomasyonunu nasıl kolaylaştırdığını keşfedin.
Bu Çözümler Bir Bakışta Nasıl Karşılaştırılır?
| Özellik | IronXL | Microsoft Office Interop |
|---|---|---|
| Office kurulumu gereklidir | Hayır | Evet |
| NuGet kurulumu | Evet -- bir paket | Hayır -- COM referansı |
| Sunucu/CI ortamı desteği | Evet | Sınırlı |
| COM obje yaşam döngüsü yönetimi | Gerekli değil | Gerekli |
| Desteklenen formatlar | XLSX, XLS, CSV, TSV, JSON | XLSX, XLS (sadece Excel) |
| Tip güvenli API | Evet | Kısmi -- geç bağlı COM |
| Linux / macOS desteği | Evet (.NET 6+) | Hayır |
| Özel durum yönetimi tarzı | Standart .NET istisnaları | COM istisnaları + manuel temizlik |
VB.NET Projeleri Icin IronXL Nasıl Kurulur?
Herhangi bir .NET projesine IronXL eklemenin en hızlı yolu, NuGet Paket Yöneticisi aracılığıyladır. Visual Studio'da Paket Yöneticisi Konsolunu açın ve çalıştırın:
Install-Package IronXl.Excel
Install-Package IronXl.Excel
Alternatif olarak, .NET CLI'yi kullanın:
dotnet add package IronXl.Excel
dotnet add package IronXl.Excel
Kurulumdan sonra, Imports IronXL'yı VB.NET modülünüzün en üstüne ekleyin. Office kurulumu gerekmez -- IronXL, Excel dosyalarını tamamen kendi çözümleme motoru ile okur ve yazar.
Eski çerçeveleri hedefleyen projeler veya belirli bir sürüm sabitleme gerektiren projeler için, IronXL NuGet sayfası tüm yayınlanmış sürümleri listeler. IronXL belgeleri, Visual Studio 2019, 2022 ve .NET CLI için kurulum kılavuzları sağlar.
Geliştiriciler IronXL Kullanarak Excel Verilerini Dizilere Nasıl Okuyabilir?
IronXL, bir yerel Office kurulumu gerektirmeden çalışma kitaplarını açmak, aralıkları seçmek ve hücre değerlerini yinelemek için temiz bir API sağlar. WorkBook.Load yöntemi bir dosya yolu kabul eder ve tüm çalışma sayfalarını ortaya çıkaran bir WorkBook nesnesi döndürür.
Imports IronXL
Module ReadExcelToArray
Sub Main()
' Load the Excel workbook from a file path
Dim workbook As WorkBook = WorkBook.Load("SalesData.xlsx")
' Access the first worksheet in the workbook
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Define the cell range to extract
Dim dataRange As IronXl.Range = sheet.GetRange("A1:D5")
' Determine array dimensions from the range
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim salesArray(rowCount - 1, colCount - 1) As String
' Populate the two-dimensional array from cell values
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
salesArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
' Print each row to the console
Console.WriteLine("Data loaded into array:")
For i As Integer = 0 To rowCount - 1
For j As Integer = 0 To colCount - 1
Console.Write(salesArray(i, j) & vbTab)
Next
Console.WriteLine()
Next
End Sub
End Module
Imports IronXL
Module ReadExcelToArray
Sub Main()
' Load the Excel workbook from a file path
Dim workbook As WorkBook = WorkBook.Load("SalesData.xlsx")
' Access the first worksheet in the workbook
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Define the cell range to extract
Dim dataRange As IronXl.Range = sheet.GetRange("A1:D5")
' Determine array dimensions from the range
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim salesArray(rowCount - 1, colCount - 1) As String
' Populate the two-dimensional array from cell values
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
salesArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
' Print each row to the console
Console.WriteLine("Data loaded into array:")
For i As Integer = 0 To rowCount - 1
For j As Integer = 0 To colCount - 1
Console.Write(salesArray(i, j) & vbTab)
Next
Console.WriteLine()
Next
End Sub
End Module
Imports IronXL
Module ReadExcelToArray
Sub Main()
' Load the Excel workbook from a file path
Dim workbook As WorkBook = WorkBook.Load("SalesData.xlsx")
' Access the first worksheet in the workbook
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Define the cell range to extract
Dim dataRange As IronXl.Range = sheet.GetRange("A1:D5")
' Determine array dimensions from the range
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim salesArray(rowCount - 1, colCount - 1) As String
' Populate the two-dimensional array from cell values
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
salesArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
' Print each row to the console
Console.WriteLine("Data loaded into array:")
For i As Integer = 0 To rowCount - 1
For j As Integer = 0 To colCount - 1
Console.Write(salesArray(i, j) & vbTab)
Next
Console.WriteLine()
Next
End Sub
End Module
Çalışma Kitabı ve Çalışma Sayfası Nesnelerini Anlamak
WorkBook.Load, XLSX, XLS, CSV ve TSV dosyalarını destekler. Yüklendikten sonra, workbook.DefaultWorkSheet ilk sayfayı döndürür. Ayrıca isimle workbook.GetWorkSheet("Sheet1") veya indeksle workbook.WorkSheets(0) erişebilirsiniz.
GetRange("A1:D5") çağrısı, Rows ve Columns koleksiyonlarını ortaya çıkaran bir IronXl.Range döndürür. Her RangeRow, Cell nesnelerini yineleyerek, cell.StringValue, altındaki hücre türünden bağımsız olarak görüntüleme dizgesi döndürür.
Türlendirilmiş Hücre Değerlerini Nasıl Ele Alırsınız?
IronXL hücreleri, StringValue yanında tiplenmiş özellikler ortaya çıkarır:
cell.IntValue-- hücreyi bir tamsayı olarak ayrıştırırcell.DoubleValue-- hücreyi bir double olarak ayrıştırırcell.DateTimeValue-- tarih formatlı hücreleri ayrıştırırcell.IsFormula-- hücrenin bir formül içerip içermediğini belirtir
Finansal veriler için, diziyi Double olarak bildirin ve cell.DoubleValue'yı doğrudan atayın. Bu, aşağı devirdiğiniz işlemler sırasında dizgeyi sayıya dönüştürmeleri önler.
Imports IronXL
Module ReadExcelToDoubleArray
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("Revenue.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim dataRange As IronXl.Range = sheet.GetRange("B2:E10")
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim revenueArray(rowCount - 1, colCount - 1) As Double
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
revenueArray(rowIndex, colIndex) = cell.DoubleValue
colIndex += 1
Next
rowIndex += 1
Next
' Calculate column totals
For j As Integer = 0 To colCount - 1
Dim total As Double = 0
For i As Integer = 0 To rowCount - 1
total += revenueArray(i, j)
Next
Console.WriteLine($"Column {j + 1} total: {total:C}")
Next
End Sub
End Module
Imports IronXL
Module ReadExcelToDoubleArray
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("Revenue.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim dataRange As IronXl.Range = sheet.GetRange("B2:E10")
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim revenueArray(rowCount - 1, colCount - 1) As Double
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
revenueArray(rowIndex, colIndex) = cell.DoubleValue
colIndex += 1
Next
rowIndex += 1
Next
' Calculate column totals
For j As Integer = 0 To colCount - 1
Dim total As Double = 0
For i As Integer = 0 To rowCount - 1
total += revenueArray(i, j)
Next
Console.WriteLine($"Column {j + 1} total: {total:C}")
Next
End Sub
End Module
Imports IronXL
Module ReadExcelToDoubleArray
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("Revenue.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim dataRange As IronXl.Range = sheet.GetRange("B2:E10")
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim revenueArray(rowCount - 1, colCount - 1) As Double
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
revenueArray(rowIndex, colIndex) = cell.DoubleValue
colIndex += 1
Next
rowIndex += 1
Next
' Calculate column totals
For j As Integer = 0 To colCount - 1
Dim total As Double = 0
For i As Integer = 0 To rowCount - 1
total += revenueArray(i, j)
Next
Console.WriteLine($"Column {j + 1} total: {total:C}")
Next
End Sub
End Module
Çıktı

Bu kod örneği IronXL'nin sezgisel API'sini gösterir. WorkBook.Load yöntemi, Excel dosyasını belirlenen klasörden doğrudan açar, Range nesnesi ise Excel elektronik tablosu içinde belirli hücre bölgelerine erişim sağlar. Eski VBA makrolarının aksine, bu yaklaşım tamamen tip güvenli ve .NET ekosistemine entegre edilmiştir.
Geleneksel Microsoft Office Interop Yaklaşımı Nedir?
Microsoft Office Interop, bir Excel uygulama örneği ile bağlantı kurmak için COM otomasyonuna dayanır. Visual Studio'da bunu ayarlamak için Proje menüsüne gidin, "Referans Ekle"yi seçin ve COM sekmesi altında Microsoft Excel Nesne Kütüphanesi arayın. Kodun çalıştığı her makinada yerel bir Excel kurulumu bulunması gerekir.
Imports Microsoft.Office.Interop.Excel
Module InteropExcelArray
Sub Main()
Dim excelApp As New Application()
Dim workbooks As Workbooks = excelApp.Workbooks
Dim workbook As Workbook = Hayırthing
Dim sheet As Worksheet = Hayırthing
Try
' Suppress screen updates during processing
excelApp.ScreenUpdating = False
' Open the workbook by full file path
workbook = workbooks.Open("C:\Data\SalesData.xlsx")
' Reference the first worksheet
sheet = CType(workbook.Sheets(1), Worksheet)
' Define a range and pull values into an object array
Dim dataRange As Range = sheet.Range("A1", "D5")
Dim values(,) As Object = CType(dataRange.Value, Object(,))
' COM arrays are 1-based, so enumerate from index 1
Dim rows As Integer = values.GetUpperBound(0)
Dim columns As Integer = values.GetUpperBound(1)
For i As Integer = 1 To rows
Dim line As String = ""
For j As Integer = 1 To columns
line &= values(i, j).ToString() & vbTab
Next
Console.WriteLine(line)
Next
Catch ex As Exception
Console.WriteLine("Error: " & ex.Message)
Finally
' Release COM objects to prevent orphaned Excel processes
If sheet IsHayırt Hayırthing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet)
End If
If workbook IsHayırt Hayırthing Then
workbook.Close(False)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook)
End If
excelApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
End Try
End Sub
End Module
Imports Microsoft.Office.Interop.Excel
Module InteropExcelArray
Sub Main()
Dim excelApp As New Application()
Dim workbooks As Workbooks = excelApp.Workbooks
Dim workbook As Workbook = Hayırthing
Dim sheet As Worksheet = Hayırthing
Try
' Suppress screen updates during processing
excelApp.ScreenUpdating = False
' Open the workbook by full file path
workbook = workbooks.Open("C:\Data\SalesData.xlsx")
' Reference the first worksheet
sheet = CType(workbook.Sheets(1), Worksheet)
' Define a range and pull values into an object array
Dim dataRange As Range = sheet.Range("A1", "D5")
Dim values(,) As Object = CType(dataRange.Value, Object(,))
' COM arrays are 1-based, so enumerate from index 1
Dim rows As Integer = values.GetUpperBound(0)
Dim columns As Integer = values.GetUpperBound(1)
For i As Integer = 1 To rows
Dim line As String = ""
For j As Integer = 1 To columns
line &= values(i, j).ToString() & vbTab
Next
Console.WriteLine(line)
Next
Catch ex As Exception
Console.WriteLine("Error: " & ex.Message)
Finally
' Release COM objects to prevent orphaned Excel processes
If sheet IsHayırt Hayırthing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet)
End If
If workbook IsHayırt Hayırthing Then
workbook.Close(False)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook)
End If
excelApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
End Try
End Sub
End Module
Imports Microsoft.Office.Interop.Excel
Module InteropExcelArray
Sub Main()
Dim excelApp As New Application()
Dim workbooks As Workbooks = excelApp.Workbooks
Dim workbook As Workbook = Nothing
Dim sheet As Worksheet = Nothing
Try
' Suppress screen updates during processing
excelApp.ScreenUpdating = False
' Open the workbook by full file path
workbook = workbooks.Open("C:\Data\SalesData.xlsx")
' Reference the first worksheet
sheet = CType(workbook.Sheets(1), Worksheet)
' Define a range and pull values into an object array
Dim dataRange As Range = sheet.Range("A1", "D5")
Dim values(,) As Object = CType(dataRange.Value, Object(,))
' COM arrays are 1-based, so enumerate from index 1
Dim rows As Integer = values.GetUpperBound(0)
Dim columns As Integer = values.GetUpperBound(1)
For i As Integer = 1 To rows
Dim line As String = ""
For j As Integer = 1 To columns
line &= values(i, j).ToString() & vbTab
Next
Console.WriteLine(line)
Next
Catch ex As Exception
Console.WriteLine("Error: " & ex.Message)
Finally
' Release COM objects to prevent orphaned Excel processes
If sheet IsNot Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet)
End If
If workbook IsNot Nothing Then
workbook.Close(False)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook)
End If
excelApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
End Try
End Sub
End Module
COM Nesne Yönetimi Neden Önemlidir?
Interop yaklaşımı, COM nesne yaşam döngüsü yönetimine dikkatli bir şekilde odaklanılmasını gerektirir. Excel uygulaması tarafından döndürülen her nesne -- çalışma kitapları, çalışma sayfaları, aralıklar ve hücreler -- bir referans sayımlı COM işaretçisi tutar. Bu nesnelerden her biri üzerinde Marshal.ReleaseComObject çağrısı yapmamak, arka planda sessizce çalışan bir EXCEL.EXE işlemi bırakır.
Sunucularda, sahipsiz işlemler zamanla birikir ve sonunda mevcut belleği veya dosya tanıtıcılarını tüketir. Yukarıdaki Try...Finally deseni minimum güvenli yaklaşımdır, ancak birçok kurumsal kod tabanı iç içe geçmiş nesne grafiklerini ele almak için özel bir COM temizleme aracı ekler.
Interop dizi indeksleme kuralı, standart VB.NET dizilerinden de farklıdır: COM tabanlı diziler indeks 1'den başlar, 0'dan değil. Bu, herhangi bir satır veya sütun döngüsünün, farktan bir eksikliğe neden olan farktan dolayı hesaplayarak farkı dikkate alması gerektiği anlamına gelir, bu da çalışma zamanı hatalarının ve veri kesme hatalarının yaygın bir kaynağıdır.
Hangi Çözüm Daha İyi Geliştirici Deneyimi Sunar?
Bu yaklaşımların üretim kullanımı için değerlendirildiğinde, birkaç faktör IronXL'yi tercih edilen çözüm olarak avantajlı kılar:
Yayın Basitliği: IronXL, tek bir NuGet paketi aracılığıyla yüklenir, Interop ise karmaşık ortam yapılandırmaları gerektirir. Bu, programınızın bir kullanıcı oturumunun olmadığı bir derleme sunucusunda veya bulut fonksiyonunda bir XLSX dosyasını işlemesi gerektiğinde önemlidir.
Kod Bakımı: IronXL aracılığıyla bir veri tablosunu okumak, kodun kısa ve okunabilir kalmasını sağlar. Satır ve sütun sayıları birinci sınıf özellikler olarak mevcuttur. Interop ile, 1 indeksli COM dizilerinde üst sınırları hesaplar ve geç bağlanan Object değerlerini manuel olarak dönüştürürsünüz.
Biçim Esnekliği: XLSX gibi standart Excel çalışma kitabı biçimlerinin ötesinde, IronXL, birden çok formatta test verileri geldiğinde yararlı olan CSV ayrıştırmayı doğal olarak destekler. Kütüphane ayrıca yeni çalışma kitabı dosyaları oluşturabilir ve değerlere eşit kolaylıkla hücrelere geri yazabilir. Tam bir liste için IronXL format guide sayfasına bakın.
Hata Yönetimi: IronXL'e standart .NET istisna modelleri uygulanır, bu da hata kurtarmayı kolaylaştırır. COM tabanlı istisnalar ek işleme mantığı gerektirir ve düzgün bir şekilde yönetilmediğinde Excel örneklerini çalışır halde bırakabilir.
Çoklu Platform Desteği: IronXL, .NET 6 ve sonrası aracılığıyla Linux ve macOS üzerinde çalışır. Interop, Win32 COM alt sistemine dayandığı için yalnızca Windows içindir.
| Kriterler | IronXL | Microsoft Interop |
|---|---|---|
| Temel dizi okuma kod satırları | ~20 | ~40+ |
| Manuel COM temizleme gerektirir | Hayır | Evet |
| Excel yüklü olmadan çalışır | Evet | Hayır |
| Docker / CI boruhatlarında çalışır | Evet | Hayır |
| Dizi indeksleme kuralları | 0-bazlı (.NET standardı) | 1-bazlı (COM standardı) |
VB.NET'te Dinamik Excel Aralıklarıyla Nasıl Çalışılır?
Üretim elektronik tabloları nadiren sabit sayıda satır içerir. IronXL, her çalışma sayfasında tüm boş olmayan hücrelerin sınırlayıcı dikdörtgenini döndüren UsedRange özelliği sağlar. Sabit kodlu bir aralık dizesi yerine bunu kullanabilirsiniz.
Imports IronXL
Module DynamicRangeExample
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("DynamicData.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Get the bounding range of all populated cells
Dim usedRange As IronXl.Range = sheet.UsedRange
Dim rowCount As Integer = usedRange.Rows.Count
Dim colCount As Integer = usedRange.Columns.Count
Dim dynamicArray(rowCount - 1, colCount - 1) As String
Dim rowIndex As Integer = 0
For Each row As RangeRow In usedRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
dynamicArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
Console.WriteLine($"Loaded {rowCount} rows x {colCount} columns from UsedRange.")
End Sub
End Module
Imports IronXL
Module DynamicRangeExample
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("DynamicData.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Get the bounding range of all populated cells
Dim usedRange As IronXl.Range = sheet.UsedRange
Dim rowCount As Integer = usedRange.Rows.Count
Dim colCount As Integer = usedRange.Columns.Count
Dim dynamicArray(rowCount - 1, colCount - 1) As String
Dim rowIndex As Integer = 0
For Each row As RangeRow In usedRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
dynamicArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
Console.WriteLine($"Loaded {rowCount} rows x {colCount} columns from UsedRange.")
End Sub
End Module
Imports IronXL
Module DynamicRangeExample
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("DynamicData.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Get the bounding range of all populated cells
Dim usedRange As IronXl.Range = sheet.UsedRange
Dim rowCount As Integer = usedRange.Rows.Count
Dim colCount As Integer = usedRange.Columns.Count
Dim dynamicArray(rowCount - 1, colCount - 1) As String
Dim rowIndex As Integer = 0
For Each row As RangeRow In usedRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
dynamicArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
Console.WriteLine($"Loaded {rowCount} rows x {colCount} columns from UsedRange.")
End Sub
End Module
Dolu Dizi Verilerini Yükleme Sonrası Nasıl Filtreler ve Doğrularsınız?
Dizi dolduktan sonra yapılan yaygın işleme adımları şunlardır:
- Başlık satırlarını atla: Görüntüleme döngüsüne sütun başlıklarını hariç tutmak için 0 yerine 1. indeksten başlayın.
- Boşlukları kısaltma: Elektronik tablodan kopyalanan başlangıç ve bitiş boşluklarını kaldırmak için
cell.StringValueüzerinde.Trim()çağırın. - Null hücrelere dikkat et: IronXL boş hücreler için boş bir dize döndürür, bu nedenle çoğu durumda boş kontrolü gerekli değildir.
- Sayı aralıklarını doğrula: Çiftleri yükledikten sonra, -1 veya 9999 gibi yer tutucu değerler içeren hücreleri yakalamak için bir aralık kontrolü uygulayın.
Daha büyük veri kümeleri için, ham iki boyutlu bir dizi yerine List(Of T) veya güçlü tipli bir sınıf kullanmayı düşünün. Verileri türlendirilmiş nesnelere yüklemek, aşağıdaki kodun okunmasını ve test edilmesini kolaylaştırır. Tüm mevcut hücre özelliklerini ve çalışma sayfası yöntemlerini belgeleyen IronXL nesne modeli referansına göz atın.
Bir VB.NET Dizisini Excel'e Nasıl Geri Aktarırsınız?
IronXL, dizi verilerini okuma için kullanılan aynı API ile bir çalışma sayfasına geri yazmayı destekler. Bu, bellekte verileri dönüştürdüğünüz ve sonucu yeni bir Excel dosyası olarak kaydetmeniz gereken senaryolar için kullanışlıdır.
Imports IronXL
Module WriteArrayToExcel
Sub Main()
' Create a new workbook and worksheet
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Results")
Dim outputArray(,) As String = {
{"Region", "Q1", "Q2", "Q3"},
{"Hayırrth", "12500", "14200", "15800"},
{"South", "9800", "10500", "11300"},
{"East", "8200", "9100", "9900"}
}
' Write the array contents to the worksheet cell by cell
For i As Integer = 0 To outputArray.GetUpperBound(0)
For j As Integer = 0 To outputArray.GetUpperBound(1)
Dim cellAddress As String = IronXl.ExcelAddress.ToAddress(i, j)
sheet(cellAddress).Value = outputArray(i, j)
Next
Next
workbook.SaveAs("Output.xlsx")
Console.WriteLine("Workbook saved as Output.xlsx")
End Sub
End Module
Imports IronXL
Module WriteArrayToExcel
Sub Main()
' Create a new workbook and worksheet
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Results")
Dim outputArray(,) As String = {
{"Region", "Q1", "Q2", "Q3"},
{"Hayırrth", "12500", "14200", "15800"},
{"South", "9800", "10500", "11300"},
{"East", "8200", "9100", "9900"}
}
' Write the array contents to the worksheet cell by cell
For i As Integer = 0 To outputArray.GetUpperBound(0)
For j As Integer = 0 To outputArray.GetUpperBound(1)
Dim cellAddress As String = IronXl.ExcelAddress.ToAddress(i, j)
sheet(cellAddress).Value = outputArray(i, j)
Next
Next
workbook.SaveAs("Output.xlsx")
Console.WriteLine("Workbook saved as Output.xlsx")
End Sub
End Module
Imports IronXL
Module WriteArrayToExcel
Sub Main()
' Create a new workbook and worksheet
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Results")
Dim outputArray(,) As String = {
{"Region", "Q1", "Q2", "Q3"},
{"Hayırrth", "12500", "14200", "15800"},
{"South", "9800", "10500", "11300"},
{"East", "8200", "9100", "9900"}
}
' Write the array contents to the worksheet cell by cell
For i As Integer = 0 To outputArray.GetUpperBound(0)
For j As Integer = 0 To outputArray.GetUpperBound(1)
Dim cellAddress As String = IronXl.ExcelAddress.ToAddress(i, j)
sheet(cellAddress).Value = outputArray(i, j)
Next
Next
workbook.SaveAs("Output.xlsx")
Console.WriteLine("Workbook saved as Output.xlsx")
End Sub
End Module
ExcelAddress.ToAddress(row, column) yardımcısı, sıfır tabanlı tamsayı koordinatlarını A1-notasyon dizelerine dönüştürür. Bu, yazma döngüsünü temiz tutar ve hücre adreslerini manuel olarak hesaplamaktan kaçınır. Formül enjeksiyonu ve stil uygulaması dahil daha fazla model için IronXL yazı öğreticiyi inceleyin.
Birden Çok Çalışma Sayfasını Ayrı Dizilere Nasıl Okursun?
Bazı çalışma kitapları verileri birden fazla yaprak üzerinde saklar -- örneğin, bir yaprak her bir ay veya her bir bölge için. IronXL, tüm sayfaları workbook.WorkSheets ile açığa çıkarır, böylece her sayfayı kendi dizisine yüklemek için yinelenebilir.
Imports IronXL
Module MultiSheetArrayLoader
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("AnnualReport.xlsx")
For Each sheet As WorkSheet In workbook.WorkSheets
Console.WriteLine($"Loading sheet: {sheet.Name}")
Dim dataRange As IronXl.Range = sheet.UsedRange
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim sheetArray(rowCount - 1, colCount - 1) As String
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
sheetArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
Console.WriteLine($" Loaded {rowCount} rows x {colCount} columns.")
Next
End Sub
End Module
Imports IronXL
Module MultiSheetArrayLoader
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("AnnualReport.xlsx")
For Each sheet As WorkSheet In workbook.WorkSheets
Console.WriteLine($"Loading sheet: {sheet.Name}")
Dim dataRange As IronXl.Range = sheet.UsedRange
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim sheetArray(rowCount - 1, colCount - 1) As String
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
sheetArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
Console.WriteLine($" Loaded {rowCount} rows x {colCount} columns.")
Next
End Sub
End Module
Imports IronXL
Module MultiSheetArrayLoader
Sub Main()
Dim workbook As WorkBook = WorkBook.Load("AnnualReport.xlsx")
For Each sheet As WorkSheet In workbook.WorkSheets
Console.WriteLine($"Loading sheet: {sheet.Name}")
Dim dataRange As IronXl.Range = sheet.UsedRange
Dim rowCount As Integer = dataRange.Rows.Count
Dim colCount As Integer = dataRange.Columns.Count
Dim sheetArray(rowCount - 1, colCount - 1) As String
Dim rowIndex As Integer = 0
For Each row As RangeRow In dataRange.Rows
Dim colIndex As Integer = 0
For Each cell As Cell In row
sheetArray(rowIndex, colIndex) = cell.StringValue
colIndex += 1
Next
rowIndex += 1
Next
Console.WriteLine($" Loaded {rowCount} rows x {colCount} columns.")
Next
End Sub
End Module
Sayfa Navigasyonu Anlamak
workbook.WorkSheets koleksiyonu sıfır indekslidir ve hem For Each hem de indeksli erişimi destekler. Sayfaları programlı olarak tanımlamak ve bilinen sayfa adlarına göre mantık dallandırmak için sheet.Name kullanın. Aralık seçimi, adlandırılmış aralıklar ve dinamik aralık algılama hakkında detaylı bilgi için IronXL çalışma sayfası kılavuzuna bakın.
Onlarca yaprağı olan çalışma kitapları için, ilgisiz sayfaları işlemekten ve belleği israf etmekten kaçınmak için yükleme öncesi ada göre filtre uygulayın.
Geliştiriciler Interop Dizi Biçimi Hakkında Ne Bilmeli?
Interop yaklaşımı, hücre verilerini COM'un 1 tabanlı indekslemesini kullanarak Object(,) dizisi olarak döndürür. İlk satırın ilk elemanı values(1, 1)'de, values(0, 0) değil. Bu, farktan bir eksiklik hatalarının sık görülen bir kaynağıdır.
Ek bir konu, boş hücreler için Interop'un Hayırthing döndürmesidir. Boş bir referansta .ToString() çağrısı yapmak, çalışma zamanında bir NullReferenceException fırlatır. Her hücre erişiminin çevresine bir null koruma eklemelisiniz:
If values(i, j) IsHayırt Hayırthing Then
line &= values(i, j).ToString() & vbTab
End If
If values(i, j) IsHayırt Hayırthing Then
line &= values(i, j).ToString() & vbTab
End If
net
IronXL, boş hücreler için boş bir dize döndürerek bu sorunu ortadan kaldırır, bu da döngü kodunun ek bekçiler gerektirmeden çalışacağı anlamına gelir.
Interop tarafından kullanılan Excel Nesne Modeli hakkında kesin bilgi için Microsoft Excel VBA referansına ve MSDN Office interop belgelerine başvurun.
Sıradaki Adımlarınız Neler?
Excel verilerini dizilere okumak en yaygın .NET elektronik tablo görevlerinden biridir ve IronXL uygulamayı basit hale getirir. Bir sonraki adımı atmak için:
- IronXL indirin: NuGet (
Install-Package IronXl.Excel) aracılığıyla yükleyin ve başlarken kılavuzunu izleyin. - Format desteğini keşfedin: IronXL, XLSX, XLS, CSV, TSV ve JSON yazıp okur. Desteklenen formatlar sayfası için ayrıntılara göz atın.
- Gelişmiş özellikleri deneyin: Excel yüklü olmadan aralıkları sıralayın, formüller uygulayın, hücre stilleri ayarlayın ve grafikler oluşturun. IronXL özellikler özetini inceleyerek tam yetenek listesini gözden geçirin.
- Kod örneklerine göz atın: IronXL kod örnekleri kütüphanesi, düzinelerce yaygın elektronik tablo görevi için kopyala-yapıştır snippet'leri sağlar.
- Lisanslamayı gözden geçirin: Üretim dağıtımları için IronXL lisanslaması, geliştirici, ekip ve OEM katmanları sunar.

Hem IronXL hem de Microsoft Office Interop, Excel verilerini dizilere okuyabilir ancak IronXL, Office'ten bağımsız mimarisi, daha temiz API'si ve esnek dağıtım seçenekleri ile üstün bir geliştirici deneyimi sunar. Kütüphane, ortak sorunları, COM nesnesi yönetimi ve sistem bağımlılıkları gibi, ortadan kaldırırken, elektronik tablo otomasyonu için gelişmiş özelliklere erişim sağlar.
Örnek projeler, kaynaklar ve belgeler ile IronXL'nin tüm yeteneklerini IronXL dokümantasyon merkezinde keşfedin. Kurumsal uygulamalar için IronXL lisanslama seçenekleri, herhangi bir proje kapsamına uyacak esnek şartlar sunar.
Sıkça Sorulan Sorular
VB.NET kullanarak dizilere Excel dosyalari okumak için en iyi yöntem nedir?
VB.NET'te dizilere Excel dosyalarini okuma, IronXL ya da Microsoft Office Interop kullanarak etkili bir şekilde saglanabilir. IronXL, Microsoft Excel kurulumuna gerek duymadan kodun karmasikligini azaltarak daha basit ve verimli bir yaklasim sunar.
Excel dosyalarini okuma konusunda IronXL, Microsoft Office Interop ile nasil karsilastirilir?
IronXL, Microsoft Office Interop'a gore Excel dosyalarini dizilere okuma noktasinda daha duzgun ve hizli bir yöntem sunar. Server'da Excel kurulumu gerekmez ve Excel dosya işleme, daha az yukle gerceklesir.
Microsoft Excel kurulumuna gerek olmadan Excel verisini yönetebilir miyim?
Evet, IronXL kullanarak Microsoft Excel kurulumuna gerek kalmadan Excel verisini yönetebilirsiniz. Bu, Excel kurmanin mumkun olmadigi server ortamlar için harika bir seçenek yapar.
VB.NET'te Excel işlemleri için neden IronXL kullanmayi dusunmeliyim?
IronXL, çeşitli Excel dosya formatlarini yöneten sezgisel bir API sunarak Excel işlemlerini basitlestirir. Microsoft Excel'in kurulamadigi ortamlarda daha hizli performans ve daha kolay kurulum saglar.
IronXL, VB.NET'te büyük Excel veri setlerini işlemek için uygun mu?
Evet, IronXL performans için optimize edilmis olup büyük Excel veri setlerini etkili bir şekilde yönetebilir, hizli veri çıkarma ve işleme saglar.
VB.NET kullanarak dizilere Excel dosyalarini okuma için mevcut kod örnekleri nelerdir?
Kılavuz, VB.NET'te dizilere Excel dosyalarini etkili bir şekilde okumayi göstererek, hem IronXL hem de Microsoft Office Interop için calisan kod örnekleri sunar.
IronXL farkli Excel dosya formatlarini destekliyor mu?
IronXL, XLSX, XLS, CSV ve daha fazlasini iceren genis bir Excel dosya formatlari yelpazesini destekler, çeşitli veri işleme ihtiyaçlari için çok yonludur.
IronXL kullanıminda Microsoft Office Interop'a karsi hangi faydalar bulunmaktadir?
IronXL, kullanımi daha kolaydir, Excel kurulumu gerektirmez ve daha iyi performans sunar. Microsoft Office Interop'taki COM etkilesimleriyle ilgili potansiyel hatalari azaltarak kodu basitlestirir.
IronXL, Microsoft Interop'tan farkli olarak iki boyutlu dizileri nasil ele alir?
IronXL, Excel verilerini iki boyutlu dizilere dönüştürmenin doğrudan yöntemlerini sunar, Microsoft Interop ile mukayese edilince daha komplek bir kurulum gerektiren yönetimde daha verimli ve basit bir yaklasimi garanti eder.
Excel dosyalarini dizilere okumak için hangi en iyi uygulamalar önerilir?
En iyi uygulamalar, ortamınız için doğru araci, kullanımi kolay ve performansi yüksek olan IronXL gibi secebilir, bellek ve işlem gucunu etkili bir şekilde yönetmek için verimli kod yapilarini garanti eder.



