Altbilgi içeriğine atla
IRONXL KULLANARAK

Microsoft Office Interop Excel C# kullanarak Excel Dosyasını Oku: Ve Ofis Olmadan Excel Dosyalarını Yaratmanın Daha Hızlı Bir Yolu

Eğer MicrosoftOffice InteropExcel C# kullanarak bir Excel dosyası okumaya çalıştıysanız, zaten şu hayal kırıklığını biliyorsunuz: sürüm uyumsuzlukları, COM nesne sızıntıları ve kodunuzu çalıştıracak her makinede Microsoft Office'in yüklü olması gerektiği zorunluluğu. Bu makalede, sizi geleneksel Interop yaklaşımı boyunca götüreceğiz, nerede tökezlediğini açıklayacağız, ve sonra IronXL'nin nasıl yaratmanıza izin verdiğini, Excel dosyalarını okuma ve yazmanın bu türden hiçbir baş ağrısı olmadan nasıl yapıldığını göstereceğiz.

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

Interop Kütüphanesi Bir Excel Çalışma Kitabını Nasıl Oluşturur?

Microsoft.Office.Interop.Excel ad alanı, Excel'in dahili olarak kullandığı aynı COM nesne modelini açığa çıkarır. Bu interop kütüphanesi aracılığıyla Excel dosyalarını okumak veya oluşturmak için, önce bir Application nesnesi yaratır, Workbooks koleksiyonuna yeni bir çalışma kitabı ekler ve ardından bireysel çalışma sayfası hücrelerine erişirsiniz. Aşağıdaki örnek, Microsoft.Office.Interop.Excel kullanarak bir XLSX dosyası oluşturmak ve hücrelere değerler yazmak için minimal bir konsol uygulamasını göstermektedir.

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Create the Excel Application COM object
Excel.Application excelApp = new Excel.Application();
if (excelApp == null)
{
    Console.WriteLine("Error: Excel is not properly installed.");
    return;
}
// Add a new workbook and access the default worksheet
Excel.Workbook xlWorkBook = excelApp.Workbooks.Add(Type.Missing);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
// Write data into specific cells
xlWorkSheet.Cells[1, 1] = "Product";
xlWorkSheet.Cells[1, 2] = "Price";
xlWorkSheet.Cells[2, 1] = "Widget";
xlWorkSheet.Cells[2, 2] = "29.99";
// Save as an XLSX file and clean up COM objects
string filepath = @"C:\Reports\products.xlsx";
xlWorkBook.SaveAs(filepath);
xlWorkBook.Close(false);
excelApp.Quit();
// Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Create the Excel Application COM object
Excel.Application excelApp = new Excel.Application();
if (excelApp == null)
{
    Console.WriteLine("Error: Excel is not properly installed.");
    return;
}
// Add a new workbook and access the default worksheet
Excel.Workbook xlWorkBook = excelApp.Workbooks.Add(Type.Missing);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
// Write data into specific cells
xlWorkSheet.Cells[1, 1] = "Product";
xlWorkSheet.Cells[1, 2] = "Price";
xlWorkSheet.Cells[2, 1] = "Widget";
xlWorkSheet.Cells[2, 2] = "29.99";
// Save as an XLSX file and clean up COM objects
string filepath = @"C:\Reports\products.xlsx";
xlWorkBook.SaveAs(filepath);
xlWorkBook.Close(false);
excelApp.Quit();
// Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(excelApp);
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices

' Create the Excel Application COM object
Dim excelApp As Excel.Application = New Excel.Application()
If excelApp Is Nothing Then
    Console.WriteLine("Error: Excel is not properly installed.")
    Return
End If

' Add a new workbook and access the default worksheet
Dim xlWorkBook As Excel.Workbook = excelApp.Workbooks.Add(Type.Missing)
Dim xlWorkSheet As Excel.Worksheet = CType(xlWorkBook.ActiveSheet, Excel.Worksheet)

' Write data into specific cells
xlWorkSheet.Cells(1, 1) = "Product"
xlWorkSheet.Cells(1, 2) = "Price"
xlWorkSheet.Cells(2, 1) = "Widget"
xlWorkSheet.Cells(2, 2) = "29.99"

' Save as an XLSX file and clean up COM objects
Dim filepath As String = "C:\Reports\products.xlsx"
xlWorkBook.SaveAs(filepath)
xlWorkBook.Close(False)
excelApp.Quit()

' Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet)
Marshal.ReleaseComObject(xlWorkBook)
Marshal.ReleaseComObject(excelApp)
$vbLabelText   $csharpLabel

Yukarıdaki kod bir Excel çalışma kitabı oluşturur, bir çalışma sayfasını satır ve hücre değerleriyle doldurur, dosyayı kaydeder ve ardından her bir COM nesnesini elle serbest bırakır. Kalkışma işlemi zorunlu değildir — atlayın ve sisteminizde EXCEL.EXE süreçlerinin belleği tükettiğini göreceksiniz. Kodun Application nesnesinin null olup olmadığını da kontrol ettiğini fark edin; eğer Microsoft Office yüklü değilse, bundan sonraki her satır hata verecektir. Office interop kütüphanesinin aynı sürümü, makinedeki Office sürümüyle eşleşmelidir, aksi takdirde, hata ayıklamakla tanınan FileNotFoundException ve benzeri çalışma zamanı hatalarıyla karşılaşacaksınız.

Visual Basic geliştiricileri, Excel Microsoft.Office.Interop.Excel kullanırken aynı zorluklarla karşılaşır, çünkü altyapıdaki COM altyapısı tüm .NET dilleri arasında aynıdır.

Interop Yaklaşımı Sunucularda ve Bulutta Ne Tür Sorunlara Neden Olur?

Microsoft, Office Interop'un sunucu ortamlarında kullanımını açıkça tavsiye etmemektedir. Interop kütüphanesi sahne arkasında Excel uygulamasının tam bir instance'ını başlatır, bu da her bir web sunucusu veya bulut uygulaması isteğinin gizli bir Windows masaüstü süreci başlattığı anlamına gelir. Bir Linux sunucusunda hiç çalışmaz. Veritabanlarına bağlantı dizgeleri, dosya sistemi yolları ve kullanıcı izinleri, Office yüklü olmadığında veya Microsoft Office'in farklı sürümleri birbiriyle çeliştiğinde ek başarısızlık noktaları haline gelir.

Geliştiriciler, Excel dosyalarını okumak ve Excel dosyaları oluşturmak için Excel'in yüklü olmadığı yolları ararken sık sık Stack Overflow ve Microsoft Q&A</a'de bu konuları paylaşır. Aşağıdaki tablo, temel farklılıkları özetlemektedir.

|Özellik|Office Interop|IronXL| | --- | --- | --- | |Excel yüklü gerektirir|Evet — yalnızca geliştirici makinesi ve her üretim sunucusu|Hayır| |Desteklenen Excel dosya formatları|XLS, XLSX|XLS, XLSX, CSV, TSV, JSON, XML| |Çapraz platform (.NET Core, Linux, macOS)|Yalnızca Windows|Windows, Linux, macOS, Azure| |COM nesne temizliği gereklidir|Evet — manuel Marshal.ReleaseComObject|Hayır| |Sunucu / bulut dağıtımı|Microsoft tarafından önerilmez|Tam destek| |Performans|Daha yavaş — gizli Excel süreci başlatır|Daha iyi performans — yönetilen .NET kodu| |.NET Framework & .NET Core desteği|Sadece .NET Framework|.NET Framework, .NET Core, .NET 5–10|

Microsoft Office Yüklü Olmadan Excel Dosyaları Nasıl Oluşturulur?

IronXL, tamamen yönetilen kodda Excel dosyalarını okuyan, yazan ve oluşturan bir .NET Excel kütüphanesidir. Microsoft Office'e bağımlılık yoktur, serbest bırakılacak COM nesnesi yoktur ve hata ayıklanacak sürüm çekişmeleri yoktur. NuGet üzerinden Visual Studio'da Solution Explorer'ı kullanarak yükleyin, IronXl.Excel'i arayın ve hazırsınız. .NET Framework 4.6.2+, .NET Core, ve .NET 5'ten .NET 10'a kadar tüm ana işletim sistemlerinde çalışır.

using IronXL;
// Create a new Excel workbook &mdash; default value is XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet and populate cells with data
WorkSheet workSheet = workBook.CreateWorkSheet("Sales");
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Price";
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 29.99;
// Apply basic formatting
workSheet["A1"].Style.Font.Bold = true;
workSheet["B1"].Style.Font.Bold = true;
// Save the XLSX file
workBook.SaveAs(@"C:\Reports\products.xlsx");
using IronXL;
// Create a new Excel workbook &mdash; default value is XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet and populate cells with data
WorkSheet workSheet = workBook.CreateWorkSheet("Sales");
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Price";
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 29.99;
// Apply basic formatting
workSheet["A1"].Style.Font.Bold = true;
workSheet["B1"].Style.Font.Bold = true;
// Save the XLSX file
workBook.SaveAs(@"C:\Reports\products.xlsx");
Imports IronXL

' Create a new Excel workbook — default value is XLSX format
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add a worksheet and populate cells with data
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Sales")
workSheet("A1").Value = "Product"
workSheet("B1").Value = "Price"
workSheet("A2").Value = "Widget"
workSheet("B2").Value = 29.99
' Apply basic formatting
workSheet("A1").Style.Font.Bold = True
workSheet("B1").Style.Font.Bold = True
' Save the XLSX file
workBook.SaveAs("C:\Reports\products.xlsx")
$vbLabelText   $csharpLabel

IronXLile Oluşturulan Excel Dosyası

MicrosoftOffice InteropExcel C# Kullanarak Excel Dosyalarını Okuma: Excel Dosyalarını Office Olmadan Oluşturmak için Daha Hızlı Bir Yol: Görsel 1 -IronXLçıktı dosyası

Yukarıdaki kod Interop örneğiyle aynı sonucu elde eder, ancak yarı satırda ve sıfır dış bağımlılıkla. WorkBook.Create(), belirtilen Excel dosya formatında (varsayılan olarak XLSX) yeni bir çalışma kitabı başlatır ve CreateWorkSheet adlandırılmış bir çalışma sayfası ekler. Hücre değerleri temiz bir indeksleme söz dizimiyle ayarlanır ve SaveAs dosya uzantısını otomatik olarak işler. Hayır Quit(), hayır Marshal.ReleaseComObject, hayır gizli süreç. Aynı API aynı zamanda tek bir yöntem çağrısıyla XLS, CSV, JSON veya XML olarak kaydetmeyi de destekler, mevcut tüm seçenekler için dışa aktarma belgelerine bakın.

IronXL ayrıca System.Data nesneleriyle temiz bir şekilde bütünleşir, böylece bir DataTable üzerinden veritabanı bağlantı dizelerinden akan veriler, manuel satır satır iterasyon olmadan doğrudan bir çalışma sayfasına yazılabilir.

Çalışma Sayfası Verileri Satır ve Hücrede Nasıl Okunur ve Yazılır?

Mevcut Excel dosyalarını okumak da aynı derecede basittir. WorkBook.Load yöntemi, herhangi birXLS, XLSXveya CSV dosyasına string dosya yolu alır. Buradan, her çalışma sayfası, sıralı koleksiyonlar olarak satırlarını ve hücrelerini sergiler, veriyi okumayı, değerleri değiştirmeyi veya sonuçları bir veritabanına veya sunucu uç noktasına yüklemeyi kolaylaştırır.

using IronXL;
// Load an existing Excel file
WorkBook workBook = WorkBook.Load(@"C:\Reports\products.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read and display each row of data
foreach (var row in workSheet.Rows)
{
    foreach (var cell in row.ToArray())
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
// Update a specific cell and save
workSheet["B2"].Value = 34.99;
workBook.SaveAs(@"C:\Reports\products_updated.xlsx");
using IronXL;
// Load an existing Excel file
WorkBook workBook = WorkBook.Load(@"C:\Reports\products.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read and display each row of data
foreach (var row in workSheet.Rows)
{
    foreach (var cell in row.ToArray())
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
// Update a specific cell and save
workSheet["B2"].Value = 34.99;
workBook.SaveAs(@"C:\Reports\products_updated.xlsx");
Imports IronXL

' Load an existing Excel file
Dim workBook As WorkBook = WorkBook.Load("C:\Reports\products.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Read and display each row of data
For Each row In workSheet.Rows
    For Each cell In row.ToArray()
        Console.Write(cell.Value & vbTab)
    Next
    Console.WriteLine()
Next

' Update a specific cell and save
workSheet("B2").Value = 34.99
workBook.SaveAs("C:\Reports\products_updated.xlsx")
$vbLabelText   $csharpLabel

IronXLile Excel Dosyası Okuma

MicrosoftOffice InteropExcel C# Kullanarak Excel Dosyalarını Okuma: Excel Dosyalarını Office Olmadan Oluşturmak için Daha Hızlı Bir Yol: Görsel 2 -IronXLile excel dosya çıktısını okuma

Bu örnek, Satırlar koleksiyonu üzerinde yineleme yaparak ve her hücrenin Değer özelliğine erişerek Excel dosyalarını nasıl okuyabileceğinizi göstermektedir. İç içe döngü deseni — var row'u var cell takip eder — bir hesap tablosunu doğal olarak nasıl düşüneceğinizi yansıtır. Veriyi okuduktan sonra, kod tek bir hücreyi günceller ve orijinali koruyarak çalışma kitabını yeni bir XLSX dosyasına kaydeder. IronXL, bir sayfa değiştirildiğinde, Excel formüllerini otomatik olarak yeniden hesaplar, bu interop kütüphanesinin de sunduğu bir özelliktir ancak tam bir Excel instance'ı başlatma maliyeti karşılığında.

Daha karmaşık senaryolar için formüller, koşullu biçimlendirme, hücreleri birleştirme, veya birden çok sayfa ile çalışmak gibi, IronXL API referansı her mevcut yöntemi ve özelliği kapsar. Kütüphane ayrıca ASP.NET denetleyicilerinden erişimi de destekler, böylece bir web uygulamasından veya API uç noktasından Excel dosyaları üretmeyi ve indirmeyi sorgusuzca halleder, sunucuda Office yüklü olmasına gerek kalmadan.

.NET Excel Otomasyonu İçin En İyi Yol Nedir?

Eğer bir proje eski bir Windows masaüstü ortamına kilitlenmişse ve Microsoft Office'in zaten yüklü olduğu ve aynı sürümün sabit kalacağı bir ortamda ise, Interop kütüphanesi temel görevler için iyi çalışabilir. Ancak her şey için, sunucu dağıtımları, bulut uygulamaları, çapraz platform derlemeleri veya daha iyi performans ve daha az çalışma zamanı hatası istediğiniz her tür senaryo için, bir bağımsız .NET Excel kütüphanesi belirgin seçimdir.

IronXL, her yaygın Excel işlemini (çalışma kitapları oluşturma, Excel hesap tablosu verilerini okuma, hücrelere yazma, birden çok dosya uzantısı türüne, XLS ve XLSX dahil olmak üzere, kaydetme) temiz, modern bir API aracılığıyla yönetir, bu .NET'in çalıştığı her yerde çalışır. Hem C# hem de Visual Basic projelerini destekler ve aynı kod Windows, Linux ve macOS'ta değişiklik yapılmadan çalışır.

Kendi projenizde test etmek için ücretsiz 30 gün deneme başlatın veya dağıtıma hazır olduğunuzda lisans seçeneklerini keşfedin.

Sıkça Sorulan Sorular

C# dilinde Microsoft Office Interop Excel kullanmanın sınırlamaları nelerdir?

C# dilinde Microsoft Office Interop Excel kullanımı, sürüm uyuşmazlıkları, COM nesne sızmaları ve kodu calistiran her makinada Microsoft Office kurulum gerekliligi gibi sorunlara yol açabilir.

IronXL, C# dilinde Excel dosyaları işlemede süreci nasıl geliştirir?

IronXL, Microsoft Office gerekliligi olmadan Excel dosyalarini oluşturmanizi, okumanizi ve yazmanizi saglayarak sürüm uyumsuzlukları ve COM nesne sızmaları gibi sorunları ortadan kaldirir.

IronXL, Microsoft Office kurulumu olmadan bir sunucuda kullanılabilir mi?

Evet, IronXL sunucu-guvenlidir ve Microsoft Office'in kurulmasını gerektirmez, bu da Excel dosyalarını işlemek için platformlar arasi bir çözüm yapar.

Excel Interop üzerindeki IronXL kullanmanın faydaları nelerdir?

IronXL, Microsoft Office'e dayanmadiğından ve sürüm uyumsuzluklari ve COM nesne sızmaları gibi yaygın sorunların riskini azalttiğindan, Excel dosyalarını daha guvenilir ve etkin bir şekilde işleyebilir.

IronXL, tüm Excel dosya sürümleriyle uyumlu mu?

IronXL, çeşitli Excel dosya biçimlerini destekler; bunlar arasında XLSX, XLS, CSV ve TSV yer alır, bu da onu farklı Excel dosya işlemleri için çok yönlü hale getirir.

IronXL, bir makinede çalışmak için herhangi bir özel kurulum gerektiriyor mu?

IronXL, Microsoft Office kurulumu gerektirmez ve özel bir kurulum olmadan C# projelerinize kolayca entegre edilebilir.

IronXL, büyük Excel dosyalarını verimli bir şekilde yönetebilir mi?

Evet, IronXL büyük Excel dosyalarını verimli bir şekilde okumak ve yazmak için tasarlanmıştır, Interop'un sınırlamalarını olmadan hızlı performans sağlar.

IronXL hangi platformları destekliyor?

IronXL, Windows, Linux ve MacOS'u destekleyen çok platformlu bir çözümdür ve bu da onu farklı ortamlarda Excel dosyalarıyla çalışmak için esnek bir seçenek haline getirir.

IronXL, Excel dosyası oluşturmayı nasıl ele alır?

IronXL, C#'ta programlı olarak Excel dosyaları oluşturmak için basit bir API sunar ve hücreleri biçimlendirme, çalışma sayfalarını yönetme gibi özellikler sağlar.

IronXL kullanıcıları için bir topluluk veya destek var mı?

Evet, IronXL kullanıcıları, entegrasyon veya kullanım soruları için belgelere, eğitimlere ve topluluk desteğine erişebilirler.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara