VB.NET Dizilere Excel Dosyasi Okuma: IronXL vs Microsoft Interop
VB.NET'te dizilere Excel verilerini okuma, 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 kaydetmeyi gerektirir. IronXL ile bu işlemi birkaç satırda, Microsoft Office yüklemeden gerçekleştirin. NuGet paketini yükleyin, WorkBook.Load çağırın, bir Range alın, ardından dizinizi doldurmak için Rows koleksiyonunu döngüleyin.
Ücretsiz deneme sürümünüzü başlatın ve IronXL'nin Visual Studio projelerinizde Excel otomasyonunu nasıl basitleştirdiğini keşfedin.
Bu Çözümler Bir Bakışta Nasıl Karşılaştırılır?
| Özellik | IronXL | Microsoft Office Interop |
|---|---|---|
| Ofis yüklemesi gereklidir | Hayır | Evet |
| NuGet kurulumu | Evet -- bir paket | Hayır -- COM referansı |
| Sunucu/CI ortam desteği | Evet | Sınırlı |
| COM nesnesi yaşam döngüsü yönetimi | Gerekli değildir | 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 |
| İstisna yönetimi stili | Standart .NET istisnaları | COM istisnaları + manuel temizlik |
VB.NET Projeleri için IronXL Nasıl Yüklenir?
IronXL'yi herhangi bir .NET projesine eklemenin en hızlı yolu NuGet Paket Yöneticisi aracılığıyladır. Visual Studio'da Paket Yöneticisi Konsolunu açın ve şu komutu çalıştırın:
Install-Package IronXL.Excel
Alternatif olarak, .NET CLI'yi kullanın:
dotnet add package IronXL.Excel
Kurulumdan sonra, VB.NET modülünüzün en üstüne Imports IronXL ekleyin. Office yüklemesine gerek yoktur -- IronXL, Excel dosyalarını tamamen kendi analiz motoru aracılığıyla okur ve yazar.
Daha eski çerçeveleri hedefleyen veya belirli bir sürüm sabitlemesi gerektiren projeler için, IronXL NuGet sayfası yayınlanan tüm sürümleri listeler. IronXL belgeleri, Visual Studio 2019, 2022 ve .NET CLI için kurulum kılavuzları sunmaktadır.
Geliştiriciler IronXL Kullanarak Excel Verilerini Dizilere Nasıl Okur?
IronXL, yerel bir Office yüklemesi 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 metodu, bir dosya yolu alır ve tüm çalışma sayfalarını açığa çı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
WorkBook ve WorkSheet 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, workbook.GetWorkSheet("Sheet1") ile ada göre veya workbook.WorkSheets(0) ile indekse göre sayfalara erişebilirsiniz.
GetRange("A1:D5") çağrısı, Rows ve Columns koleksiyonlarını açığa çıkaran bir IronXL.Range döndürür. Her RangeRow, Cell nesnelerini döngüler; ve cell.StringValue, alttaki hücre tipine bakılmaksızın görüntüleme dizesini döndürür.
Tipli Hücre Değerlerini Nasıl Yönetirsiniz?
IronXL hücreleri, StringValue yanında türle ilgili özellikler açığa çıkarır:
cell.IntValue-- hücreyi bir tamsayı olarak çözümlercell.DoubleValue-- hücreyi bir double olarak çözümlercell.DateTimeValue-- tarih formatlı hücreleri çözümlercell.IsFormula-- hücrenin bir formül içerip içermediğini belirtir
Finansal veriler için diziyi Double olarak belirleyin ve cell.DoubleValue doğrudan atayın. Bu, aşağı yöndeki işlem sırasında dizgi-sayı dönüşümlerinden kaçınır.
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
IRON VB CONVERTER ERROR developers@ironsoftware.com
Çıktı

Bu kod örneği, IronXL'nin sezgisel API'sini gösterir. WorkBook.Load metodu, Excel dosyasını belirtilen klasörünüzden doğrudan açar, Range nesnesi ise Excel elektronik tablosundaki belirli hücre bölgelerine erişim sağlar. Eski VBA makrolarından farklı olarak, bu yaklaşım tamamen tip güvenlidir ve .NET ekosistemine entegredir.
Geleneksel Microsoft Office Interop Yaklaşımı Nedir?
Microsoft Office Interop, bir Excel uygulama örneğiyle 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 sekmesinde Microsoft Excel Nesne Kütüphanesi'ni arayın. Kodun çalıştığı her makinede yerel bir Excel yüklemesi olmalıdır.
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 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
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 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
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 nesnesi yaşam döngüsü yönetimine dikkat 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ılan COM işaretçisine sahiptir. Bu nesnelerden her birine 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 eninde sonunda mevcut bellek veya dosya kollarını tükenir. Yukarıdaki Try...Finally deseni asgari güvenli yaklaşımdır, ancak birçok kurumsal kod tabanı, iç içe nesne grafiklerini yönetmek için özel bir COM temizleme aracı ekler.
Interop dizi indeksleme kuralı da, standart VB.NET dizilerinden farklıdır: COM tabanlı diziler 1'den başlar, 0'dan değil. Bu, herhangi bir satır veya sütun döngüsünün bir sapma farkı nedeniyle farklı hesaplanması gerektiği anlamına gelir, bu da çalışma zamanında sıkça karşılaşılan hataların ve veri kısaltma hatalarının kaynağıdır.
Hangi Çözüm Daha İyi Geliştirici Deneyimi Sunar?
Bu yaklaşımları üretim kullanımı için değerlendirirken, birkaç faktör IronXL'yi tercih edilen çözüm olarak avantaj sağlar:
Dağıtım Basitliği: IronXL, tek bir NuGet paketi aracılığıyla yüklenirken, Interop karmaşık çevre yapılandırmaları gerektirir. Programınız, bir kullanıcı oturumunun mevcut olmadığı bir derleme sunucusunda veya bulut işlevinde bir XLSX dosyasını işlemesi gerektiğinde bu önemlidir.
Kod Bakımı: IronXL aracılığıyla veri tablosunu okumak, kodu kısa ve okunabilir tutar. Satır ve sütun sayıları, birinci sınıf özellikler olarak mevcuttur. Interop ile, 1 olarak indekslenmiş COM dizilerinde üst sınırları hesaplar ve sonradan bağlanan Object değerlerini manuel olarak döküm yaparsınız.
Format Esnekliği: XLSX gibi standart Excel çalışma kitabı biçimlerinin ötesinde, IronXL yerel CSV ayrıştırmayı destekler, bu test verileri birden fazla formatta geldiğinde kullanışlı olur. Kütüphane ayrıca yeni çalışma kitabı dosyaları oluşturabilir ve eşit bir basitlikle hücrelere değerler yazabilir. Tam liste için IronXL format kılavuzunu görün.
Hata Yönetimi: Standart .NET istisna modelleri IronXL'ye uygulanır, bu da hata kurtarma işlemini kolaylaştırır. COM tabanlı istisnalar ek yönetim mantığı gerektirir ve doğru yönetilmezse Excel örneklerini çalışır durumda bırakabilir.
Çapraz Platform Desteği: IronXL, .NET 6 ve sonraki sürümleri aracılığıyla Linux ve macOS'ta çalışır. Interop, Win32 COM alt sistemi bağımlılığı nedeniyle sadece Windows ile sınırlıdır.
| Kriter | IronXL | Microsoft Interop |
|---|---|---|
| Temel dizi okuması için kod satırları | ~20 | ~40+ |
| Manuel COM temizliği gerekli | Hayır | Evet |
| Excel yüklü olmadan çalışır | Evet | Hayır |
| Docker / CI işlem hatlarında çalışır | Evet | Hayır |
| Dizi indeksleme kuralı | 0 tabanlı (.NET standardı) | 1 tabanlı (COM standardı) |
VB.NET'te Dinamik Excel Aralıklarıyla Nasıl Çalışılır?
Üretim hesap tabloları genellikle sabit sayıda satıra sahip olmaz. IronXL, her çalışma sayfasında UsedRange özelliğini sağlar, bu da tüm boş olmayan hücrelerin sınırlandırma dikdörtgenini döndürür. Sabit kodlanmış bir aralık dizgesi 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
IRON VB CONVERTER ERROR developers@ironsoftware.com
Dizi Verilerini Yükledikten Sonra Nasıl Filtreler ve Doğrularsınız?
Diziyi doldurduktan sonra yaygın olarak yapılan işlem adımları şunları içerir:
- Başlık satırlarını atla: Sütun başlıklarını atlamak için görüntüleme döngüsünü 1 indexten başlatın.
- Boşlukları kırpın: Elektronik tablodan kopyalanan baştaki ve sondaki boşlukları kaldırmak için
.Trim()öğesinicell.StringValueüzerinde çağırın. - Boş hücreleri işleme: IronXL, boş hücreler için boş bir dizge döndürür, bu nedenle çoğu durumda boş kontrolü gereksizdir.
- Sayı aralıklarını doğrula: Çiftleri yükledikten sonra -1 veya 9999 gibi yer tutucu değerleri 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ü türle tanımlanmış bir sınıf kullanmayı düşünün. Verileri tip tanımlı nesnelere yüklemek, sonraki kodların okunmasını ve test edilmesini daha kolay hale getirir. IronXL nesne modeli referansı, mevcut tüm hücre özelliklerini ve çalışma sayfası yöntemlerini belgeler.
VB.NET Dizisini Excel'e Geri Nasıl Aktarırsınız?
IronXL, okuma için kullanılan aynı API ile dizileri çalışma sayfasına yazmayı destekler. Bu, hafızada verileri dönüştürdüğünüz ve sonucu yeni bir Excel dosyası olarak kaydetmeniz gerektiği 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"},
{"North", "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ı programı, sıfır bazlı tam sayı koordinatlarını A1-notasyon dizelerine dönüştürür. Bu, yazma döngüsünü temiz tutar ve hücre adreslerini manuel hesaplamaktan kaçınır. Daha fazla desen için inceleyin IronXL yazma kılavuzu, formül ekleme ve stil uygulama dahil.
Birden Çok Çalışma Sayfasını Ayrı Dizilere Nasıl Okursunuz?
Bazı çalışma kitapları birden fazla sayfada veri depolar -- örneğin, ay veya bölge başına bir sayfa. IronXL tüm sayfaları workbook.WorkSheets üzerinden açığa çıkarır, bu sayede her sayfayı kendi dizisine yüklemek için döngüleyebilirsiniz.
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 Yönlendirmesini 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 dayanan mantıksal dallanma için sheet.Name kullanın. IronXL çalışma sayfası kılavuzu aralık seçimi, adlandırılmış aralıklar ve dinamik aralık tespiti hakkında ayrıntılı bilgi verir.
Birçok sayfaya sahip çalışma kitapları için, ilgisiz sayfaları işlememek ve belleği boşa harcamamak için yüklemeden önce isimle filtreleyin.
Geliştiriciler Interop Dizi Formatı Hakkında Ne Bilmelidir?
Interop yaklaşımı, hücre verilerini COM'un 1-bazlı dizinleme kullanarak bir Object(,) dizisi olarak döndürür. İlk eleman, ilk sırada values(1, 1), values(0, 0) değil. Bu, sıkça karşılaşılan bir hata kaynağıdır.
Ek bir endişe, boş işlemidir: Interop, boş hücreler için Hayırthing döndürür. Boş bir referansta .ToString() çağrısı, çalışma zamanında bir NullReferenceException fırlatır. Her hücre erişiminde bir boş koruyucu eklemelisiniz:
If values(i, j) IsNot Nothing Then
line &= values(i, j).ToString() & vbTab
End If
If values(i, j) IsNot Nothing Then
line &= values(i, j).ToString() & vbTab
End If
If values(i, j) IsNot Nothing Then
line &= values(i, j).ToString() & vbTab
End If
IronXL bu sorunu, boş hücreler için boş bir dizge döndürerek ortadan kaldırır, bu da döngü kodunun fazladan koruma gerektirmeden çalışabileceği anlamına gelir.
Interop tarafından kullanılan Excel Nesne Modeli hakkında yetkili bilgi için, Microsoft Excel VBA referansı ve MSDN Office interop dokümantasyonu.
Sonraki Adımlarınız Neler?
Excel verilerini dizilere okumak, .NET hesap tablosu görevlerinin en yaygınıdır ve IronXL uygulanmasını kolaylaştırır. Bir sonraki adıma geçmek için,
- IronXL İndirin: NuGet aracılığıyla yükleyin (
Install-Package IronXL.Excel) ve başlangıç kılavuzunu takip edin. - Format desteğini keşfedin: IronXL XLSX, XLS, CSV, TSV ve JSON dosyalarını okur ve yazar. Ayrıntılar için desteklenen formatlar sayfasını inceleyin.
- Gelişmiş özellikleri deneyin: Aralıkları sıralayın, formülleri uygulayın, hücre stilleri belirleyin ve Excel yüklü olmadan grafikler oluşturun. Tam kapasite listesi için IronXL özellik genel bakışını inceleyin.
- Kod örneklerine göz atın: IronXL kod örnekleri kütüphanesi, yaygın hesap tablosu görevleri için kopyala-yapıştır snippetleri sağlar.
- Lisanslamayı inceleyin: Üretim dağıtımları için, IronXL lisanslama, geliştirici, ekip ve OEM seviyeleri sunuyor.

Hem IronXL hem de Microsoft Office Interop, Excel verilerini dizilere okuyabilir, ancak IronXL, Ofis'ten bağımsız mimarisi, temiz API'si ve esnek dağıtım seçenekleriyle üstün bir geliştirici deneyimi sunar. Kütüphane, COM nesne yönetimi ve sistem bağımlılıkları gibi yaygın zorlukları ortadan kaldırırken, hesap tablosu otomasyonu için gelişmiş özelliklere erişim sağlar.
IronXL dokümantasyon merkezinde örnek projeler, kaynaklar ve dokümantasyonla IronXL'nin tam yeteneklerini keşfedin. Kurumsal uygulamalar için, IronXL lisanslama seçenekleri herhangi bir proje kapsamına uyacak esnek terimler sunar.
Sıkça Sorulan Sorular
VB.NET ile Excel dosyalarını dizilere okumanın en iyi yolu nedir?
VB.NET içinde Excel dosyalarını dizilere okumak, IronXL veya Microsoft Office Interop kullanarak etkili bir şekilde başarılabilir. IronXL, Microsoft Excel kurulumu gereksinimini ortadan kaldırması ve kodun karmaşıklığını azaltması ile basitleştirilmiş ve verimli bir yaklaşımdır.
IronXL, Excel dosyalarını okuma konusunda Microsoft Office Interop ile nasıl karşılaştırılır?
IronXL, Excel dosyalarını dizilere okuma konusunda Microsoft Office Interop'a kıyasla daha hızlı ve daha derli toplu bir yöntem sunar. Sunucuda Excel'in kurulu olmasını gerektirmez ve Excel dosya manipülasyon görevlerini daha az zaman yükü ile yönetir.
Excel verilerini Microsoft Excel'i yüklemeden manipüle edebilir miyim?
Evet, IronXL kullanarak Microsoft Excel yüklü olmadan Excel verilerini manipüle edebilirsiniz. Bu, Excel kurulumunun mümkün olmadığı sunucu ortamları için harika bir seçenek yapar.
VB.NET içinde Excel işlemleri için IronXL'yi neden kullanmalıyım?
IronXL, çeşitli Excel dosya formatlarını ele alan sezgisel bir API sunarak Excel işlemlerini basitleştirir. Özellikle Microsoft Excel'in kurulamadığı ortamlarda daha hızlı performans ve daha kolay dağıtım sağlar.
IronXL, VB.NET içinde büyük Excel veri setlerini ele almak için uygun mudur?
Evet, IronXL, performans için optimize edilmiştir ve büyük Excel veri kümelerini verimli bir şekilde işleyebilir, hızlı veri çıkarımı ve manipülasyon sağlar.
VB.NET kullanarak Excel dosyalarını dizilere okuma için mevcut olan kod örnekleri nelerdir?
Rehber, VB.NET'te Excel dosyalarını dizilere etkili bir şekilde okuma konusunda IronXL ve Microsoft Office Interop için çalışan kod örnekleri sağlar.
IronXL farklı Excel dosya formatlarını destekliyor mu?
IronXL, XLSX, XLS, CSV gibi geniş bir yelpazede Excel dosya formatını destekleyerek, çeşitli veri işleme ihtiyaçları için çok yönlü olmasını sağlar.
Microsoft Office Interop üzerinden IronXL kullanmanın yararları nelerdir?
IronXL, kullanımı daha kolaydır, Excel'in kurulu olmasını gerektirmez ve daha iyi performans sunar. Kodu basitleştirir ve Microsoft Office Interop'taki COM etkileşimleriyle ilişkili potansiyel hataları azaltır.
IronXL, iki boyutlu dizileri Microsoft Interop'tan farklı olarak nasıl ele alır?
IronXL, Excel verilerini iki boyutlu dizilere dönüştürmek için doğrudan yöntemler sunarak, Microsoft Interop ile detaylı bir kuruluma göre daha verimli ve basit bir yaklaşım sağlar.
Excel dosyalarını dizilere okuma konusunda hangi en iyi uygulamalar önerilir?
En iyi uygulamalar, ortamınız için doğru aracı seçmeyi, örneğin IronXL'yi kullanım kolaylığı ve performansı nedeniyle seçmeyi ve bellek ve işlem gücünü etkili bir şekilde yönetmek için verimli kod yapısı sağlamayı içerir.



