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 daha önce MicrosoftOffice InteropExcel C# kullanarak Excel dosyası okumayı denediyseniz, uyumsuz sürümler, COM nesne sızıntıları ve kodunuzu çalıştıran her makinede Microsoft Office'in yüklü olması gerekliliği gibi hayal kırıklığı yaratan nedenlerini bilirsiniz. Bu makalede, sizi geleneksel Interop yaklaşımı üzerinden yönlendireceğiz, nerede başarısız olduğuna değineceğiz, ve ardından IronXL'nin size Excel dosyaları oluşturma, okuma ve yazma işlemlerini nasıl daha basitleştirdiğini 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 ilk olarak bir Application nesnesi yaratırsınız, Workbooks koleksiyonuna yeni bir çalışma kitabı eklersiniz ve ardından tek tek ç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ğer 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 manuel olarak serbest bırakır. Sonunda temizlik yapmak opsiyonel değildir — atlayın ve sisteminizde belleği tüketen hayalet EXCEL.EXE işlemleri göreceksiniz. Kodun ayrıca Application nesnesinin null olup olmadığını kontrol ettiğine dikkat edin. Microsoft Office kurulmadıysa, bundan sonraki her satır bir hata fırlatacaktır. Office interop kütüphanesinin aynı sürümü, makinedeki Office sürümü ile eşleşmelidir, yoksa FileNotFoundException ve hata ayıklaması ünlü şekilde zor olan benzer çalışma zamanı hatalarıyla karşılaşırsınız.

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

Interop Yaklaşımı Sunucularda ve Bulutta Hangi Sorunlara Yol Açar?

Microsoft, Office Interop'un sunucu ortamlarında kullanılmasını açıkça tavsiye etmez. Interop kütüphanesi sahne arkasında tam bir Excel uygulaması başlattığı için, bir web sunucusunda veya bulut uygulamasındaki her istek gizli bir Windows masaüstü sürecini başlatır. Bir Linux sunucusunda, bu hiç çalışmaz. Veritabanlarına bağlantı dizeleri, dosya sistemi yolları ve kullanıcı izinleri, Office yüklü olmadığında veya farklı Microsoft Office sürümleri birbiriyle çeliştiğinde ek hata noktaları haline gelir.

Geliştiriciler, Stack Overflow ve Microsoft Q&A üzerinde bu sorunlar hakkında sık sık yazılar paylaşıyorlar ve yüklü Excel olmadan Excel dosyalarını okuma ve oluşturma yolları arıyorlar. Aşağıdaki tablo temel farkları özetlemektedir.

| Özellik |Office Interop|IronXL| |---|---|---| | Excel yüklü olmalıdır | 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) | Sadece Windows |Windows, Linux, macOS, Azure| | COM nesnesi temizliği gereklidir | Evet — manuel Marshal.ReleaseComObject |Hayır| | Sunucu / bulut dağıtımı | Microsoft tarafından önerilmez |Tam destekli| |Performans| Daha yavaş — gizli bir Excel işlemi başlatır | Daha iyi performans — yönetilen .NET kodu | | .NET Framework & .NET Core desteği | Yalnızca .NET Framework | .NET Framework, .NET Core, .NET 5–10 |

Microsoft Office Kurulmadan Excel Dosyaları Nasıl Oluşturulabilir?

IronXL, tamamen yönetilen kodla Excel dosyalarını okuyup, yazıp, oluşturan bir .NET Excel kütüphanesidir. Microsoft Office'e bağımlılık yok, serbest bırakılması gereken COM nesnesi yok ve hata ayıklaması için sürüm çatışmaları yok. Visual Studio'da Çözüm Gezgini'ni kullanarak IronXL.Excel'i arayın ve kurun, işiniz bitti. .NET Framework 4.6.2+, .NET Core, .NET 5'ten .NET 10'a kadar her büyük işletim sistemi üzerinde sorunsuz çalışır.

using IronXL;
// Create a new Excel workbook — 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 — 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

IronXL ile Oluşturulmuş Excel Dosyası

MicrosoftOffice InteropExcel C# kullanarak Excel Dosyası Okuma: Office Olmadan Daha Hızlı Excel Dosyaları Oluşturmanın Bir Yolu: Görsel 1 -IronXL çıktı dosyası

Yukarıdaki kod, Interop örneği ile aynı sonucu sağlar; ancak satırların yarısı kadar ve sıfır harici bağımlılık ile. WorkBook.Create() belirtilen bir Excel dosya formatında yeni bir çalışma kitabı başlatır (varsayılan olarak XLSX), ve CreateWorkSheet adlandırılmış bir çalışma sayfası ekler. Hücre değerleri temiz bir indeksleyici sözdizimiyle ayarlanır ve SaveAs dosya uzantısını otomatik olarak yönetir. Quit() yok, Marshal.ReleaseComObject yok, gizli süreç yok. Aynı API ayrıca 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 belgesine bakın.

IronXL ayrıca System.Data nesneleriyle temiz bir şekilde entegre olur, bu nedenle veritabanı bağlantı dizelerinden DataTable aracılığıyla akan veriler doğrudan bir çalışma sayfasına yazılabilir manuel satır satır yineleme olmadan.

Çalışma Sayfası Verileri Satırlar ve Hücreler Arasında Nasıl Okunur ve Yazılır?

Mevcut Excel dosyalarını okumak da bir o kadar basittir. WorkBook.Load yöntemi, herhangi birXLS, XLSXveya CSV dosyasına string bir dosya yolu kabul eder. Buradan, her bir çalışma sayfası kendi satırlarını ve hücrelerini iteratif koleksiyonlar olarak açığa çıkarır, bu da verileri okumayı, değerleri değiştirmeyi veya sonuçları bir veritabanına ya da sunucu noktasına yüklemeyi basit hale getirir.

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

IronXL ile Excel Dosyasını Okuma

MicrosoftOffice InteropExcel C# kullanarak Excel Dosyası Okuma: Office Olmadan Daha Hızlı Excel Dosyaları Oluşturmanın Bir Yolu: Görsel 2 -IronXL ile okunan excel dosyası çıktısı

Bu örnek, Satır koleksiyonu üzerinde yineleyerek ve her hücrenin Değer özelliğine erişerek Excel dosyalarını nasıl okuduğunuzu gösterir. İç içe döngü deseni — var row ardından var cell — bir elektronik tabloyu doğal bir şekilde nasıl düşündüğünüzü yansıtır. Verileri okuduktan sonra, kod tek bir hücreyi günceller ve başkentikleri koruyarak yeni bir XLSX dosyasını kaydeder. IronXL, bir sayfa değiştirildiğinde herhangi bir Excel formülünü otomatik olarak yeniden hesaplar, bu interop kütüphanesinin de sunduğu ancak tam bir Excel örneğinin başlatılması pahasına sunduğu bir özelliktir.

Formüller, koşullu biçimlendirme, hücreleri birleştirme veya birden fazla sayfayla çalışma gibi daha gelişmiş senaryolar için, IronXL API referansı mevcut tüm yöntemleri ve özellikleri kapsar. Kütüphane ayrıca ASP.NET denetleyicilerinden erişimi de destekler, bu da bir web uygulaması veya API noktasından Excel dosyaları oluşturmayı ve indirmeyi kolaylaştırır, sunucuda Office yüklü olmasına gerek kalmadan.

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

Bir proje, Microsoft Office'in halihazırda yüklü olduğu ve aynı sürümün kararlı kalacağı eski bir Windows masaüstü ortamına kilitlenmişse, interop kütüphanesi temel görevler için iyi çalışabilir. Ancak geri kalan tüm durumlar, sunucu dağıtımları, bulut uygulamaları, platformlar arası yapılar veya daha iyi performans ve daha az çalışma zamanı hatası istediğiniz her senaryo için, bağımsız bir .NET Excel kütüphanesi açık bir şekilde seçenektir.

IronXL, her yerde çalışır. NET çalıştığı her yerde çalışan temiz bir, modern API aracılığıyla tüm yaygın Excel işlemlerini (çalışma kitapları oluşturma, Excel elektronik tablo verilerini okuma, hücrelere yazma, birden fazla dosya uzantısıyla kaydetme dahil olmak üzere XLS ve XLSX) yönetir. C# ve Visual Basic projelerini destekler ve aynı kod, modifikasyon olmadan Windows, Linux ve macOS üzerinde çalışır.

Ücretsiz 30 günlük deneme başlatın ve kendi projenizde test edin veya lisans seçeneklerini keşfedin ve dağıtmaya hazır olduğunuzda bunu yapın.

Sıkça Sorulan Sorular

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

C#'ta Microsoft Office Interop Excel kullanımı, sürüm uyumsuzlukları, COM nesne sızıntıları ve kodu çalıştıran her makinede Microsoft Office yüklü olması gerekliliği gibi sorunlara yol açabilir.

IronXL, C#'ta Excel dosyalarını yönetme sürecini nasıl geliştirir?

IronXL, Microsoft Office'e ihtiyaç duymadan Excel dosyalarını oluşturma, okuma ve yazma imkanı sunar, sürüm uyumsuzlukları ve COM nesne sızıntıları gibi sorunları ortadan kaldırır.

IronXL, Microsoft Office yüklü olmadan bir sunucuda kullanılabilir mi?

Evet, IronXL sunucu güvenlidir ve Microsoft Office'in kurulmasını gerektirmez, bu da Excel dosyalarını yönetmek için çoklu platform bir çözüm haline getirir.

Excel Interop yerine IronXL kullanmanın avantajları nelerdir?

IronXL, Microsoft Office'e bağımlı olmadan Excel dosyalarını yönetmenin daha güvenilir ve verimli bir yolunu sunar, sürüm uyumsuzlukları ve COM nesne sızıntıları gibi yaygın sorunların riskini azaltır.

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

IronXL, XLSX, XLS, CSV ve TSV dahil geniş bir Excel dosya formatı yelpazesini destekler, bu da onu çeşitli Excel dosya işlemleri için çok yönlü yapar.

IronXL için bir makinede çalışmak üzere özel bir kurulum gerekiyor mu?

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

IronXL büyük Excel dosyalarını verimli bir şekilde işleyebilir mi?

Evet, IronXL, büyük Excel dosyalarını verimli bir şekilde okuyup yazmak üzere tasarlanmış olup, Interop'un sınırlamaları olmadan hızlı performans sağlar.

IronXL hangi platformları destekler?

IronXL, Windows, Linux ve MacOS'u destekleyerek farklı ortamlarda Excel dosya yönetimi için esnek bir seçenek haline getirir.

IronXL, Excel dosyası oluşturmayı nasıl yönetir?

IronXL, C# dilinde programlı olarak Excel dosyaları oluşturmak için basit bir API sunar ve hücre biçimlendirme, çalışma sayfalarını yönetme gibi özellikler içerir.

IronXL kullanıcıları için bir topluluk ya da destek mevcut mu?

Evet, IronXL kullanıcıları herhangi bir entegrasyon veya kullanım sorusu için yardım almak üzere belgelere, öğreticilere ve topluluk desteğine erişebilirler.

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