Altbilgi içeriğine atla
DIğER BILEşENLERLE KARşıLAşTıRıN

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?

IronXL vs Microsoft Office Interop -- VB.NET Dizi İşlemleri için Özellik Karşılaştırması
Ö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
$vbLabelText   $csharpLabel

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ümler
  • cell.DoubleValue -- hücreyi bir double olarak çözümler
  • cell.DateTimeValue -- tarih formatlı hücreleri çözümler
  • cell.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
$vbLabelText   $csharpLabel

Çıktı

VB .NET Excel Dosyasını Diziye Okuma: IronXL vs Microsoft Interop Karşılaştırması: Görüntü 1 - VB .NET ile diziye Excel dosyası okumak için IronXL vs. Office Excel

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.

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

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
$vbLabelText   $csharpLabel

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.

VB.NET'te Dizi Okuma için Performans ve Bakım Tavizleri
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
$vbLabelText   $csharpLabel

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() öğesini cell.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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.

VB .NET Excel Dosyasını Diziye Okuma: IronXL vs Microsoft Interop Karşılaştırması: Görüntü 2 - IronXL çıktısı

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.

Lütfen dikkate alınMicrosoft Office Interop, ilgili sahibinin tescilli markasıdır. Bu site, Microsoft tarafından onaylanmamış, desteklenmemiş veya finanse edilmemiştir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

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.

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